Rust 的 Arc<Mutex<T>> 用法

1 含义

  • Arc<Mutex<T>> 让T可以在异步/多线程中被修改。

  • Arc(Atomic Reference Counting) :原子引用计数,允许多个线程共享 同一份数据的所有权(类似 Rc,但线程安全)。

  • Mutex(互斥锁) :保证同一时刻只有一个线程能访问内部数据,避免数据竞争。

2 使用

rust 复制代码
use std::sync::Arc;
use tokio::sync::Mutex; 

//自定义一个Student类型
struct Student{
    name:String,
    age:u32
};

let data:T = Arc::new(Mutex::new(
    Student{
        name:String::from("nick"),
        age: 17
    }
)); // 类型 Arc<Mutex<T>>


//参数传递时使用克隆
function_a(data.clone())

//函数参数声明
async fun function_a(d:Arc<Mutex<T>>){
  //使用时获得锁  
  let mut safe_d = d.lock().unwrap(); 
  //修改变量
  safe_d.age = 100;
  //或直接修改整体
  *safe_d = temp_d;  
}