Rust 的 Arc<Mutex<T>> 用法
1 含义
Arc<Mutex<T>> 让T可以在多线程中被修改。
Arc(Atomic Reference Counting):原子引用计数,允许多个线程共享同一份数据的所有权(类似Rc,但线程安全)。Mutex(互斥锁):保证同一时刻只有一个线程能访问内部数据,避免数据竞争。
2 使用
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; }