| // Fearless Concurrency | |
| #![allow(dead_code)] | |
| #![allow(unused_imports)] | |
| use rust_tutorial::*; | |
| use std::sync::{Mutex, Arc}; | |
| use std::thread; | |
| fn main() { | |
| let counter = Arc::new(Mutex::new(0)); | |
| let mut workers = vec![]; | |
| for _ in 0..10 { | |
| let counter = Arc::clone(&counter); | |
| let worker = thread::spawn(move || { | |
| let mut num = counter.lock().unwrap(); | |
| *num += 1; | |
| }); | |
| workers.push(worker); | |
| } | |
| for worker in workers { | |
| worker.join().unwrap(); | |
| } | |
| println!("Result: {}", *counter.lock().unwrap()); | |
| } |