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)되어 이후 lockErr을 반환해요.

더 알아보기 (Learn more)