Inflearn Community Q&A
상호 배제란?
Resolved
Written on
·
523
0
SpinLock을 구현하다가 궁금해져서 질문 남깁니다.
Mutex를 검색해보니 Mutual Exclusion, 즉 상호 배제의 약자더라구요.
검색해본 결과, 임계 구역에 접근하지 못하면 다시 대기 상태로 돌아가야 한다고 되어 있기도 하고, Mutex의 이름도 그렇고
SpinLock은 임계 구역에 하나의 스레드만 접근할 수 있도록 계속 재시도하는 방법인데, 이는 상호 배제가 맞는 것인지, 아닌 것인지 궁금합니다.
개념이 자꾸 헷갈리네요
unityC#network
Answer 1
3
Rookiss
Instructor
여러가지 용어가 혼용되는 경향이 있긴 한데요.
정확히 말하면 Mutual Exclusion (상호 배제)는 단순히
공유 데이터에 대해 동시 접근을 막는 것을 의미합니다.
상호배제를 구현하기 위한 방법은 여러가지가 있을 수 있습니다.
그리고 상호배제를 구현할 때 임계 구역에 접근하지 못한 쓰레드를 어떻게 처리 할지? 가 핵심 고민인데
SpinLock에서는 그냥 루프를 돌면서 재시도 하는 것에 불과하고
여전히 1번에 1쓰레드 접근은 변함이 없습니다.
일반 Lock은 상호배제를 원칙으로 하니 SpinLock도 상호배제에 해당합니다.
(물론 Reader-Writer Lock의 Reader Lock은 상호배제가 아닌 다른 특성을 갖고 있습니다.)






Mutual Exclusion이 좁은 의미, 넓은 의미로 각각 쓰이는 것 같네요. 설명 감사드립니다!