extern crate atom; use std::sync::Arc; use std::thread; use atom::*; fn main() { // Create an empty atom let shared_atom = Arc::new(Atom::empty()); // set the value 75 shared_atom.swap(Box::new(75)); // Spawn a bunch of thread that will try and take the value let threads: Vec> = (0..8).map(|_| { let shared_atom = shared_atom.clone(); thread::spawn(move || { // Take the contents of the atom, only one will win the race if let Some(v) = shared_atom.take() { println!("I got it: {:?} :D", v); } else { println!("I did not get it :("); } }) }).collect(); // join the threads for t in threads { t.join().unwrap(); } }