Guest User

Untitled

a guest
Jun 22nd, 2018
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.64 KB | None | 0 0
  1. extern crate rand;
  2.  
  3. use std::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT};
  4. use std::thread;
  5. use std::time::Duration;
  6.  
  7. use rand::{thread_rng, Rng};
  8.  
  9. static COUNTER: AtomicUsize = ATOMIC_USIZE_INIT;
  10.  
  11. fn inc(id: u8) {
  12. let mut rng = thread_rng();
  13. let wait_ms = rng.gen_range(1, 500);
  14. thread::sleep(Duration::from_millis(wait_ms));
  15. let my_count = COUNTER.fetch_add(1, Ordering::SeqCst);
  16. println!("Thread {}, my count: {}", id, my_count);
  17. }
  18.  
  19. fn main() {
  20. let mut handles = Vec::new();
  21. for i in 0..5 {
  22. handles.push(thread::spawn(move || inc(i)));
  23. }
  24. for handle in handles {
  25. let _ = handle.join();
  26. }
  27. }
Add Comment
Please, Sign In to add comment