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

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

PacketHandler

락만 뮤텍스로 바꿨을뿐인데 프로그램이 죽습니다

작성

·

325

0

락 부분이 좀 어려워 흔히 쓰는 뮤텍스 방식으로 수정해보았습니다. 사진은 하나만 넣었지만 WRITE_LOCK을 쓰는 모든 부분을 위와같이 수정했습니다. 

 

하지만

위와 같은 에러가 나오는걸로 보아 멀티쓰레드 동기화 문제로 보입니다. 

혹시 선생님이 쓰신 락이랑 뮤텍스 기반 락이랑 어떻게 다르기에 평범한 락으로 바꿨더니 프로그램이 죽는걸까요?

(혹시 안보이시면 우클릭 -> 새 탭에서 이미지 열기 해주시면 잘보일거에요)

답변 1

1

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

재귀적인 락 Recursive Lock 허용 여부입니다.
락을 잡은 상태에서, 동일한 쓰레드가 또 락을 잡아도 되느냐?~에서
우리가 만든 LOCK 코드에서는 이를 허용해줬습니다.

하지만 표준 mutex는 재귀적인 락을 허용하지 않습니다.

이렇게 테스트하면 동일한 에러가 나는 것을 확인할 수 있습니다.
재귀적인 락 관련해서는 얼마전 C# 강의에서 유사한 질문이 있었는데 아래 링크 참고 바랍니다.
|
https://www.inflearn.com/questions/547752?re_comment_id=191276

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

질문하기