작성
·
211
0
(이 질문이 이벤트랑 관련이 있는건가 싶기는 하지만...)
궁금해서 SpinLock과 mutex의 차이점을 찾아봤었는데 SpinLock은 CPU의 자원을 계속 사용하면서 기다리는 것이고 mutex는 lock이 풀릴 때 까지 sleep상태에 들어간다고 본 기억이 있습니다.
그럼 mutex는 sleep방식을 사용하는 건가요? 아니면 내부적으로 이벤트를 이용하는 건가요?
답변 1
0
C++ 스펙에 mutex 관련 세부 구현에 관한 얘기는 없으니
정확하게 관심을 가질 사항이 아니고
OS 환경에 따라 다르게 구현이 되어 있을 수 있습니다.
일반적으로 SpinLock은 계속 acquire 시도를 하는 락의 종류를 얘기하지만,
std::mutex는 공식적으로 제공하는 C++의 락일 뿐입니다.
이전에 윈도우에서 많이 사용하던 CriticalSection 또한 초반에는
sleep하는 방식에서 언제가부터 spinLock 형태로 바뀐 기억이 있네요.