Rc는 단일 스레드용이라 스레드 간 공유에 맞지 않는다.
Mutex는 접근을 잠그고 Arc는 여러 스레드의 소유권을 나눈다
공유 상태 동시성은 값을 함께 쓰는 것이 아니라, 누가 언제 접근하는지 제한하는 구조다. MutexGuard가 임계 구역을 만들고 Arc가 스레드 간 소유권을 안전하게 복제한다.
01
공유 포인터
Arc<Mutex<T>>
여러 스레드가 같은 Mutex 소유권을 나눈다.
02
락 획득
lock()
내부 값에 접근하기 전 가드를 얻는다.
03
임계 구역
가드가 살아 있는 동안 값을 읽고 수정한다.
04
자동 해제
가드가 스코프를 벗어나면 다음 스레드가 진입한다.
원자적 참조 카운팅으로 여러 스레드 소유를 허용한다.
내부 변경 접근을 한 시점에 하나로 제한한다.
락 범위
가드를 필요 이상으로 오래 들고 있지 않는다.
데드락
여러 락을 잡을 때는 획득 순서를 고정한다.
Poisoning
패닉 이후 lock 결과를 처리하는 경로를 둔다.