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;
}