인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

KeepCoding's profile image
KeepCoding

asked

[MMORPG Game Development Series with C++ and Unreal] Part 4: Game Server

Condition Variable

질문 드립니다.

Written on

·

225

0

spinlock 수업에서 설명해주신 내용처럼 이번 강의 예제의 경우에도 두개의 쓰레드가 서로 동시에 락을 걸어서 데드락상황이 발생할 수 있는건가요? 그래서 실제 사용시에는 CAS처리를 해줘야 하는건지 문의드립니다.

windows-serverMMORPGnetwork

Answer 1

1

rookiss님의 프로필 이미지
rookiss
Instructor

경합이랑 데드락, 스핀락을 헷갈리시면 안 됩니다.
현 상황에서 경합은 이뤄질 수 있지만, 그렇다고 데드락이 일어나는 것은 아닙니다.
(unique_lock이라는 락가드로 락이 필요없으면 풀어주고 있죠)

스핀락은 락을 획득하지 못했을 때,
다시 시도를 하는 방법을 의미하지만
그것은 상호배타적 특성을 구현하는 하나의 방법이고
이미 std::mutex에서 그런 상호배타적 특성을 구현하고 있기에
CAS를 별도로 처리해줄 필요는 없습니다.

KeepCoding님의 프로필 이미지
KeepCoding
Questioner

답변 감사합니다.

스핀락 강의에서 spinlock강의에선 mutex를 사용하지 않은 경우였군요.

spinlock클래스를 구현하여 락가드에 넣어주는건  유저레벨에서 제어하기 위함인가요?

KeepCoding's profile image
KeepCoding

asked

Ask a question