Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::sync::Arc;
- use std::sync::Mutex;
- use std::ops::Deref;
- use std::ops::DerefMut;
- fn main1() {
- println!("Hello!");
- let n = 10;
- let arc = Arc::new(Mutex::new(Some(n)));
- let arc_clone = arc.clone();
- println!("lock1: req");
- let mut mutex_guard = arc_clone.lock().unwrap();
- println!("lock1: got");
- match mutex_guard.deref_mut() {
- Some(ref mut x) => {
- println!("Got {}", x);
- *x = 11;
- },
- None => panic!("Error."),
- };
- drop(mutex_guard);
- println!("lock2: req");
- let mut mutex_guard = arc_clone.lock().unwrap();
- println!("lock1: got");
- match mutex_guard.deref_mut() {
- Some(ref mut x) => {
- println!("Got {}", x);
- *x = 12;
- },
- None => panic!("Error."),
- };
- }
- fn main() {
- println!("Hello!");
- let n = 10;
- let arc = Arc::new(Mutex::new(Some(n)));
- let arc_clone = arc.clone();
- println!("lock1: req");
- let mut mutex_guard = arc_clone.lock().unwrap();
- println!("lock1: got");
- let opt = &mut *mutex_guard;
- match opt {
- Some(ref mut x) => {
- println!("Got {}", x);
- *x = 11;
- },
- None => panic!("Error."),
- };
- drop(opt);
- println!("lock2: req");
- let mut mutex_guard = arc_clone.lock().unwrap();
- println!("lock1: got");
- match mutex_guard.deref_mut() {
- Some(ref mut x) => {
- println!("Got {}", x);
- *x = 12;
- },
- None => panic!("Error."),
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement