33 lines
907 B
Rust
33 lines
907 B
Rust
use std::sync::{Arc, Mutex};
|
|
use std::thread;
|
|
use std::time::Duration;
|
|
|
|
fn main() {
|
|
let mutex1 = Arc::new(Mutex::new(0));
|
|
let mutex2 = Arc::new(Mutex::new(0));
|
|
let mutex3 = Arc::clone(&mutex1);
|
|
let mutex4 = Arc::clone(&mutex2);
|
|
let mutex5 = Arc::clone(&mutex1);
|
|
let mutex6 = Arc::clone(&mutex2);
|
|
|
|
let handle1 = thread::spawn(move || {
|
|
let mut num1 = mutex1.lock().unwrap();
|
|
*num1 = 1;
|
|
thread::sleep(Duration::from_secs(1));
|
|
let mut num2 = mutex2.lock().unwrap();
|
|
*num2 = 22;
|
|
});
|
|
|
|
let handle2 = thread::spawn(move || {
|
|
let mut num2 = mutex4.lock().unwrap();
|
|
*num2 = 2;
|
|
thread::sleep(Duration::from_secs(1));
|
|
let mut num1 = mutex3.lock().unwrap();
|
|
*num1 = 11;
|
|
});
|
|
|
|
handle1.join().unwrap();
|
|
handle2.join().unwrap();
|
|
|
|
println!("mutex1: {:?}, mutex2: {:?}", mutex5, mutex6);
|
|
} |