강의

멘토링

로드맵

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

essenger M님의 프로필 이미지
essenger M

작성한 질문수

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

Lock-Free Stack #1

TryPop과 WaitPop

작성

·

285

0

TryPop에서는 stack이 비어있을떄 return false를 하여도 해당 쓰레드가 cpu의 권한을 포기하지않는것에 반해  WaitPop에서 cv로 할 경우에는 cpu의 권한을 포기함으로서 쓰레드들끼리의 cpu 점유 권한에 대한 경쟁을 줄일 수 있다고 생각하고 있는데 맞는지 모르겠습니다.

퀴즈

66%나 틀려요. 한번 도전해보세요!

멀티쓰레딩 환경에서 여러 쓰레드가 동시에 공유 데이터에 접근하여 값을 수정할 때 발생할 수 있는 예상치 못한 결과의 주요 원인은 무엇일까요?

데드락

쓰레드 지역 저장소(TLS) 충돌

경쟁 상태(Race Condition)

CPU 파이프라인 실패

답변 2

0

essenger M님의 프로필 이미지
essenger M
질문자

답변 정말 감사드립니다..!

0

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

네 맞습니다.
극단적으로 예를 들어 1년 동안 stack이 비어있다면,
전자의 경우에는 1년 동안 꾸준히 [stack이 비어 있습니까?]를
지속적으로 CAS을 이용해 체크하면서 무식하게 시간을 낭비하지만
후자는 깨어날 일 없이 그냥 계속 잠들어 있게 됩니다.

essenger M님의 프로필 이미지
essenger M

작성한 질문수

질문하기