Mutex

Mutex<T>๋Š” ์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ๋ณด์žฅํ•˜๊ณ , ์ผ๊ธฐ์ „์šฉ ์ธํ„ฐํŽ˜์ด์Šค ๋’ค์—์„œ T์— ๋Œ€ํ•œ ๊ฐ€๋ณ€ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค:

Mutex<T> ensures mutual exclusion and allows mutable access to T behind a read-only interface:

use std::sync::Mutex;

fn main() {
    let v: Mutex<Vec<i32>> = Mutex::new(vec![10, 20, 30]);
    println!("v: {:?}", v.lock().unwrap());

    {
        let v: &Mutex<Vec<i32>> = &v;
        let mut guard = v.lock().unwrap();
        guard.push(40);
    }

    println!("v: {:?}", v.lock().unwrap());
}

impl<T: Send> Sync for Mutex<T>๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค

Notice how we have a impl<T: Send> Sync for Mutex<T> blanket implementation.