//多线程计算器 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 }