inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

PacketHandler

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

397

사과일광욕

작성한 질문수 33

0

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

 

하지만

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

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

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

network MMORPG windows-server

답변 1

1

Rookiss

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

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

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

Memory Pool에서 오버플로우 질문입니다.

0

61

2

포토폴리오 및 진로 관련하여 고민입니다.

0

107

1

포토폴리오 관련 고민입니다.

0

58

1

실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.

0

80

2

성능 테스트 결과

0

101

2

게임 서버 Stateful, Stateless 진로 고민

0

117

1

WaitOnAddress와 Sleep의 차이 질문

0

80

1

궁금한거 있습니다.

0

79

2

JobTimer 구동 스레드

0

105

2

TryPop() 동작 관련 질문

0

79

1

로드맵 C#서버 C++서버 방향성 질문

0

144

2

스레드 id를 출력할떄 메인스레드 id도 출력되나요?

0

71

1

생명주기를 위한 의도적 복사

0

83

2

락프리의 실무에서 사용 질문

0

137

2

32bit threadID와 16비트 상위 WriteFlag에 대해

0

99

2

mutex와 sleep 차이점

0

115

1

실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다

0

150

2

Stomp Allocator의 Release함수에 대한 질문입니다.

0

93

1

공부법 관련해서

0

181

2

MakeShared 함수 관련

0

112

1

지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.

0

142

2

운영체제관련 질문입니다

0

128

1

send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.

0

115

2

메모리 풀 질문있습니다.

0

121

1