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

최수용님의 프로필 이미지
최수용

작성한 질문수

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

ReaderWriterLock 구현 연습

ReaderWriterLock 구현연습 강의 질문입니다.

작성

·

110

0

강의 23:26초 화면

동일 쓰레드가 락을 획득했는지 여부 확인하는 코드에서

int lockThreadId = (_flag & Write_mask ) >> 16;

if (Thread.CurrentThread.ManagedThreadID == lockThreadId)

이 부분이 있는데 쓰레드 아이디는 항상 15비트 이하의 정보로 제한이 되어있는건가요? 15비트 정보를 초과한 숫자가 들어오면 문제가 될듯 보이는데 코드 실행해보면 정상작동되네요.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

최수용님께서 질문하신 ReaderWriterLock 구현 시 쓰레드 ID의 15비트 제한에 관한 질문과 관련해서, 직접적으로 동일한 상황을 다룬 정보는 제공된 자료 중에 포함되지 않았습니다. 하지만, 유사한 질문이나 관련 내용인 “WRITER_MASK로 원하는 값을 구분 가능한 이유가 스레드ID가 15bit로 표현할 수 있는 값보다 작아서 인가요?”에 대한 답변이 있어 이와 관련된 정보를 제공해드리겠습니다.

이 질문에서는 쓰레드 ID와 관련하여 그 값의 범위와 관련된 궁금증을 해소하는 내용이 있었습니다. Rookiss의 답변에 따르면, 쓰레드 ID 생성이 어떻게 이루어지는지, 그리고 실제 상황에서 ID 값이 어떻게 배정되는지는 직접 실험을 해보는 것이 좋다고 언급하고 있습니다. 한편, 사용하는 언어나 운영체제에 따라 쓰레드 ID가 배정되는 정확한 규칙, 즉 생성 규칙이 상이할 수 있음을 시사합니다.

또한, ID 값이 15비트로 표현 가능한 수를 초과할 경우의 상황에 대해서는 실제로 그런 상황이 발생한다면, 프로그램이나 시스템에 문제가 있음을 나타내며, 그럴 경우 오류 처리를 하는 것이 적절하다고 제안됩니다.

따라서, 쓰레드 ID가 15비트 제한을 초과할 가능성에 대한 걱정은 이론적으로 상정할 수 있으나, 실제 프로그래밍 환경에서는 직접 실험하거나 특정 상황에 대한 예외 처리를 통해 해결하는 방향이 일반적입니다.

WRITER_MASK로 원하는 값을 구분 가능한 이유가 스레드ID가 15bit로 표현할 수 있는 값보다 작아서 인가요? 질문에서 더 많은 이해를 도울 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

최수용님의 프로필 이미지
최수용

작성한 질문수

질문하기