• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

이벤트 질문입니다.

22.06.18 22:27 작성 조회수 165

0

(이 질문이 이벤트랑 관련이 있는건가 싶기는 하지만...)

궁금해서 SpinLock과 mutex의 차이점을 찾아봤었는데 SpinLock은 CPU의 자원을 계속 사용하면서 기다리는 것이고 mutex는 lock이 풀릴 때 까지 sleep상태에 들어간다고 본 기억이 있습니다.

그럼 mutex는 sleep방식을 사용하는 건가요? 아니면 내부적으로 이벤트를 이용하는 건가요?

답변 1

답변을 작성해보세요.

0

C++ 스펙에 mutex 관련 세부 구현에 관한 얘기는 없으니
정확하게 관심을 가질 사항이 아니고
OS 환경에 따라 다르게 구현이 되어 있을 수 있습니다.

일반적으로 SpinLock은 계속 acquire 시도를 하는 락의 종류를 얘기하지만,
std::mutex는 공식적으로 제공하는 C++의 락일 뿐입니다.
이전에 윈도우에서 많이 사용하던 CriticalSection 또한 초반에는
sleep하는 방식에서 언제가부터 spinLock 형태로 바뀐 기억이 있네요.