inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

ReaderWriterLock 구현 연습

상호 배제란?

해결된 질문

539

leomessi

작성한 질문수 50

0

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

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

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

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

개념이 자꾸 헷갈리네요

unity C# network

답변 1

3

Rookiss

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

0

leomessi

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

C#에서의 RAII

0

66

3

TLS 질문드립니다.

0

80

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

74

2

Unity Span

0

98

2

XML, Dll 차이점

0

134

2

Session 질문입니다

0

96

1

Write Read 커서 키워드

0

88

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

85

2

네트워크 Send 전담 스레드 배치

0

113

2

UnhandledException 으로 서버 터지는 경우

0

102

2

컨텐츠 단, 엔진 단

0

118

1

질문 있습니다

0

93

2

C# 게임서버 3D MMORPG

0

159

2

유니티6 버전

0

106

2

receive하는 부분과 send하는 부분의 차이

0

154

2

커서의 위치의 중요성

0

111

2

C++ 전혀 모르는데 C# 서버

0

176

2

강의에 질문이 있습니다

0

93

2

멀티스레드 이해도 질문

0

107

1

500 vs 500

0

147

3

OnAcceptHandler 액션 함수

0

70

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

204

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

86

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

112

1