Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. use std::sync::Arc;
  2. use std::sync::Mutex;
  3. use std::ops::Deref;
  4. use std::ops::DerefMut;
  5.  
  6. fn main1() {
  7.  
  8. println!("Hello!");
  9.  
  10. let n = 10;
  11.  
  12. let arc = Arc::new(Mutex::new(Some(n)));
  13.  
  14. let arc_clone = arc.clone();
  15.  
  16. println!("lock1: req");
  17. let mut mutex_guard = arc_clone.lock().unwrap();
  18. println!("lock1: got");
  19.  
  20. match mutex_guard.deref_mut() {
  21. Some(ref mut x) => {
  22. println!("Got {}", x);
  23. *x = 11;
  24. },
  25. None => panic!("Error."),
  26. };
  27.  
  28. drop(mutex_guard);
  29.  
  30. println!("lock2: req");
  31. let mut mutex_guard = arc_clone.lock().unwrap();
  32. println!("lock1: got");
  33.  
  34. match mutex_guard.deref_mut() {
  35. Some(ref mut x) => {
  36. println!("Got {}", x);
  37. *x = 12;
  38. },
  39. None => panic!("Error."),
  40. };
  41. }
  42.  
  43. fn main() {
  44.  
  45. println!("Hello!");
  46.  
  47. let n = 10;
  48.  
  49. let arc = Arc::new(Mutex::new(Some(n)));
  50.  
  51. let arc_clone = arc.clone();
  52.  
  53. println!("lock1: req");
  54. let mut mutex_guard = arc_clone.lock().unwrap();
  55. println!("lock1: got");
  56.  
  57. let opt = &mut *mutex_guard;
  58. match opt {
  59. Some(ref mut x) => {
  60. println!("Got {}", x);
  61. *x = 11;
  62. },
  63. None => panic!("Error."),
  64. };
  65.  
  66. drop(opt);
  67.  
  68. println!("lock2: req");
  69. let mut mutex_guard = arc_clone.lock().unwrap();
  70. println!("lock1: got");
  71.  
  72. match mutex_guard.deref_mut() {
  73. Some(ref mut x) => {
  74. println!("Got {}", x);
  75. *x = 12;
  76. },
  77. None => panic!("Error."),
  78. };
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement