Mutex::new(5)
데이터는 뮤텍스 안에 들어가고 직접 i32처럼 쓸 수 없습니다.
MutexGuard가 스코프를 벗어날 때 풀린다
lock().unwrap()은 내부 값에 바로 접근하게 하지 않고
MutexGuard를 반환합니다. 이 가드가 락 보유와 해제를
함께 책임집니다.
Mutex::new(5)데이터는 뮤텍스 안에 들어가고 직접 i32처럼 쓸 수 없습니다.
lock().unwrap()락을 얻을 때까지 기다린 뒤 내부 값을 가리키는 가드를 받습니다.
*num = 6MutexGuard가 가변 참조처럼 동작해 보호된 값을 바꿉니다.
Drop이 실행되어 락을 풀고 다음 접근을 허용합니다.
Mutex<i32>는 i32가 아니므로 타입이 접근 순서를 강제합니다.
가드가 살아 있는 동안 같은 뮤텍스의 다른 접근은 기다려야 합니다.
가드가 버려지는 시점에 락이 풀리므로 해제 호출을 잊는 실수가 줄어듭니다.
다른 스레드가 락을 가진 채 패닉하면 lock은 실패할 수
있습니다. 예제의 unwrap은 학습을 단순하게 하려는 선택이고,
실제 코드에서는 그 LockResult를 상황에 맞게 처리합니다.