Mutex — 상호 배제 잠금
Mutex — 상호 배제 잠금
Mutex<T>는 상호 배제(mutual exclusion)를 제공하는 동기화 프리미티브예요. 한 번에 한 스레드만 보호된 데이터에 접근할 수 있게 해요.
출처: Rust 공식 문서
본문
pub struct Mutex<T: ?Sized> { /* private fields */ }
주요 메서드
pub const fn new(t: T) -> Mutex<T>
pub fn lock(&self) -> LockResult<MutexGuard<'_, T>>
pub fn try_lock(&self) -> TryLockResult<MutexGuard<'_, T>>
pub fn get_mut(&mut self) -> LockResult<&mut T>
예시
use std::sync::Mutex;
let mutex = Mutex::new(0);
{
let mut data = mutex.lock().unwrap();
*data += 1;
}
lock은 잠금을 획득한 MutexGuard를 반환하고, 가드가 드롭되면 잠금이 해제돼요. 스레드가 잠금을 보유한 채 패닉하면 뮤텍스는 독(poison)되어 이후 lock은 Err을 반환해요.