Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. use std::sync::{Arc, RwLock};
  2. use std::{thread, time};
  3.  
  4. fn main() {
  5.  
  6. let lock = Arc::new(RwLock::new(1));
  7. let c_lock = lock.clone();
  8.  
  9. thread::spawn(move || {
  10. println!("Begin Read");
  11. let n = lock.read().unwrap();
  12. assert_eq!(*n, 1);
  13.  
  14. println!("Sleeping");
  15. thread::sleep(time::Duration::from_millis(10000));
  16. });
  17.  
  18. thread::spawn(move || {
  19. thread::sleep(time::Duration::from_millis(2000));
  20. println!("Begin Write");
  21. let r = c_lock.write();
  22. assert!(r.is_ok());
  23.  
  24. thread::sleep(time::Duration::from_millis(5000));
  25. println!("Done Write");
  26. });
  27.  
  28. loop {
  29. thread::sleep(time::Duration::from_millis(100));
  30. };
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement