共享状态并发 #

一、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