[Rust] 뮤텍스
Updated:
개요
- 타입 시스템과 소유권 규칙으로 인해 락 사용의 안정성 보장
예제
- 코드
-
use std::sync::{Arc, Mutex}; use std::thread; use std::time::Duration; fn main() { let arc_mutex = Arc::new(Mutex::new(0)); let mut handles = vec![]; for _i in 0..5 { let mutex = Arc::clone(&arc_mutex); handles.push(thread::spawn(move || { let mut n = mutex.lock().unwrap(); println!("1 : {}", *n); *n += 1; thread::sleep(Duration::from_millis(500)); })); let mutex = Arc::clone(&arc_mutex); handles.push(thread::spawn(move || { let mut n = mutex.lock().unwrap(); println!("2 : {}", *n); *n += 1; thread::sleep(Duration::from_millis(500)); })); } for handle in handles { handle.join().unwrap(); } }
-
- 실행 결과
-
1 : 0 2 : 1 2 : 2 1 : 3 2 : 4 2 : 5 1 : 6 2 : 7 1 : 8 1 : 9
-