共享状态并发 #
一、Mutex #
rust
use std::sync::{Arc, Mutex};
use std::thread;
fn main() {
let counter = Arc::new(Mutex::new(0));
let mut handles = vec![];
for _ in 0..10 {
let counter = Arc::clone(&counter);
let handle = thread::spawn(move || {
let mut num = counter.lock().unwrap();
*num += 1;
});
handles.push(handle);
}
for handle in handles {
handle.join().unwrap();
}
println!("结果: {}", *counter.lock().unwrap());
}
二、RwLock #
rust
use std::sync::RwLock;
fn main() {
let lock = RwLock::new(5);
// 多个读锁
{
let r1 = lock.read().unwrap();
let r2 = lock.read().unwrap();
println!("{} {}", r1, r2);
}
// 写锁
{
let mut w = lock.write().unwrap();
*w += 1;
}
}
三、总结 #
本章学习了:
- Mutex 互斥锁
- RwLock 读写锁
- Arc 配合使用
最后更新:2026-03-27