강의

멘토링

커뮤니티

Inflearn Community Q&A

leomessi's profile image
leomessi

asked

[C# and Unity MMORPG Game Development Series] Part4: Game Server

ReaderWriterLock implementation practice

상호 배제란?

Resolved

Written on

·

523

0

SpinLock을 구현하다가 궁금해져서 질문 남깁니다.

Mutex를 검색해보니 Mutual Exclusion, 즉 상호 배제의 약자더라구요.

검색해본 결과, 임계 구역에 접근하지 못하면 다시 대기 상태로 돌아가야 한다고 되어 있기도 하고, Mutex의 이름도 그렇고

SpinLock은 임계 구역에 하나의 스레드만 접근할 수 있도록 계속 재시도하는 방법인데, 이는 상호 배제가 맞는 것인지, 아닌 것인지 궁금합니다.

개념이 자꾸 헷갈리네요

unityC#network

Answer 1

3

Rookiss님의 프로필 이미지
Rookiss
Instructor

여러가지 용어가 혼용되는 경향이 있긴 한데요.
정확히 말하면 Mutual Exclusion (상호 배제)는 단순히
공유 데이터에 대해 동시 접근을 막는 것을 의미합니다.
상호배제를 구현하기 위한 방법은 여러가지가 있을 수 있습니다.
그리고 상호배제를 구현할 때 임계 구역에 접근하지 못한 쓰레드를 어떻게 처리 할지? 가 핵심 고민인데
SpinLock에서는 그냥 루프를 돌면서 재시도 하는 것에 불과하고
여전히 1번에 1쓰레드 접근은 변함이 없습니다.
일반 Lock은 상호배제를 원칙으로 하니 SpinLock도 상호배제에 해당합니다.
(물론 Reader-Writer Lock의 Reader Lock은 상호배제가 아닌 다른 특성을 갖고 있습니다.)

leomessi님의 프로필 이미지
leomessi
Questioner

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

leomessi's profile image
leomessi

asked

Ask a question