인프런 커뮤니티 질문&답변

오민성님의 프로필 이미지
오민성

작성한 질문수

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

ReaderWriterLock 구현 연습

WriteLock이 Empty_Flag일때만 가능하다면...

작성

·

201

0

a스레드에서 ReadLock 사용하고

b스레드에서 WriteLock을 사용하면 대기가 되는데(Empty_Flag가 아니니깐)

ReadLock은 Write_Mask만 없으면 계속 들어올 수 있으니

끝임없이 ReadLock이 발생된다면 대기 중인 b스레드는 언제 WriteLock이 진행되나요?

답변 2

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

그 정도로 극단적으로 끊임없이 하는 경우는
사실상 배제해야 합니다. Read는 아주 짧게 값만 읽는 것이 목표이고
그 이상 시간을 잡는다면 그놈이 범인입니다(?)

0

오민성님의 프로필 이미지
오민성
질문자

질문하고 보니 약간 이상하게 작성했는데 ReadCount가 1 이상이면 다른 쓰레드가 WriteLock하면 대기 상태이고, ReadLock을 했던 쓰레드들이 ReadUnlock이 다 되어야 ReadCount가 0이 되서 EMPTY_FLAG가 될 수 있고 그때 대기 중인 WriteLock이 진행되는다고 생각하는 데,

그럼 다른 쓰레드가 끝임없이 ReadLock을 사용해서 ReadCount가 0이 되지 않으면 어떻게 되는 지 궁금합니다.

오민성님의 프로필 이미지
오민성

작성한 질문수

질문하기