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

이광웅님의 프로필 이미지
이광웅

작성한 질문수

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

데드락 어떻게 해결할 지 궁금합니다.

작성

·

286

0

안녕하세요. Rookiss 강사님.

덕분에 강의 아주 감사히 잘 들어가며 배우고 있습니다.

다름이 아니라,

강의 중, 데드락 프로파일러를 이용하여, lock 간 사이클 여부를 확인하여

사전에 어느 정도 사전에 예방 가능하지만 그래도 다 막을 수는 없다고 하셨는데,

막상 발견된다면 데드락을 해결하는 것은 어렵지 않다고 알려주셨습니다.

 

혹시, 데드락 프로파일러를 통해 발견되지 않을 경우,

데드락이 발생했는지 어떻게 확인하고, 데드락이 발견되면 어떻게 해결하는 지

궁금합니다.

 

스스로 생각하기로는 스핀락의 경우, 데드락이 발생하게 되면 뺑뺑이를 계속 돌게 될테니

CPU가 증가하는 모습으로 나타날 것으로 보이려나 싶네요

 

혹여나 강의 중에 설명 주셨는데, 재질문 드리는 거라면 정말 죄송합니다.

항상 좋은 강의 감사합니다.

답변 1

0

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

데드락이 발생하면, 어떤 락을 사용했냐에 따라 다르겠지만
보통 일정 시간 이상 락을 잡으면 크래시가 나게 코드를 추가합니다.
경우에 따라 강제로 크래시를 내고 덤프를 보고 메모리를 분석할 수도 있구요.
크래시가 난 원인이 엉뚱하게 락이라면 아주 높은 확률로 데드락을 의심할 수 있고
이리 저리 다른 쓰레드가 어디서 먹통된지 확인하다 보면 금방 찾을 수 있습니다.

이광웅님의 프로필 이미지
이광웅

작성한 질문수

질문하기