rust 学习 多线程3
//多线程计算器 use std::sync::{Mutex, Arc}; //Arc允许多线程共享所有权 Mutex提供内部可变性和互斥访问 use std::thread; fn main() { let counter Arc::new(Mutex::new(0)); let mut handles vec![]; for i in 0..10 { let cnt Arc::clone(counter); let handle thread::spawn(move || { // 每个线程执行 100 次递增 for _ in 0..100 { let mut num cnt.lock().unwrap(); *num 1; // 锁在这里释放每次循环结束 } println!(Thread {} finished, i); }); handles.push(handle); } for handle in handles { handle.join().unwrap(); } println!(Final result: {}, *counter.lock().unwrap()); // 输出: Final result: 1000 }