Mutex 공유 시도

Arc Mutex 컴파일러 에러

카운터를 10개 스레드가 함께 증가시키려면 값 보호와 스레드 안전한 복수 소유권이 동시에 필요합니다.

1 E0382

Mutex<i32>를 클로저로 직접 이동

let counter = Mutex::new(0);
Arc·Mutex 수정 판단 첫 반복에서 소유권이 이동되어 다음 반복의 스레드가 같은 값을 받을 수 없습니다.
2 E0277

Rc<Mutex<i32>>로 복수 소유 시도

let counter = Rc::new(Mutex::new(0));
Arc·Mutex 수정 판단 Rc<T>는 참조 카운트를 스레드 안전하게 바꾸지 않아 Send가 아닙니다.
3 OK

Arc<Mutex<i32>>로 스레드 안전 공유

let counter = Arc::new(Mutex::new(0));
Arc·Mutex 수정 판단 Arc가 소유권을 공유하고 Mutex가 한 번에 한 스레드의 가변 접근을 보장합니다.