// 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());
}
