이번 강의는 Demonstration인 만큼 잠금과 잠금해제의 구현물을 만들어보는 시간?입니다
왜 그럴까요?
이제 때가 되었다고 생각하셨나 봅니다
자 리뷰해보자면
초반에는 이런 의문점을 해결해주십니다
close()함수도 처음 시작할 때 Peers를 잠그고 시작하고
이전에 동시에 실행되었던 부분에 만들어준 AllPeers() 함수도 Peers를 잠그고 시작하는데
close()함수가 시작되어 Peers를 잠근 후 함수가 실행되는 동안 우연히 AllPeers()도 실행되었다면 AllPeers()의 첫 문장인 Peers.m.lock()이 이미 실행되어있으니 AllPeers() 함수도 실행되버리며 예전과 똑같이 data race에 해당되는 것 아니냐 고 생각할 수 있습니다
그러나 함수를 읽어보면 Peers.m.lock()함수는 즉 lock()함수가 진행되는 중이라면 Unlock()이 될 때까지
다른 Peers에 접근하는 go routine함수가 잠겨있는 lock()때문에 호출되는 걸 막는다고 go는 설명합니다
그러므로 안심하고 사용하여도 될 것 같습니다
이렇게 Mutex에 대해 배우고 이해도가 상승했습니다
정리해보자면
Mutex는 데이터를 잠금, 잠금해제할 수 있도록 하는 기능?입니다
이 Mutex는 잠금, 잠금해제 하고 싶은 value(or data)와 함께 struct로 구성되어 있어야합니다
잠그고 싶은 data value는 v로 쓰고
Mutex는 m으로 쓰는 것이 관례라고 합니다