작성
·
278
0
제목과 같습니다.
mutex 라이브러리를 이용한 강의 내용의 mutex m은 기본적으로 busy waiting이라고 말할 수 있나요?
뒷 강의 내용에서 나오는 mutex 변수를 Spinlock 구조로 되어있다고 이해해도 문제가 없는걸까요?
(강의내용 11분 50초경)
이번 강의에서 t1과 t2가 Push를 하게 될때, 만약 t1이 lock을 붙잡고 있으면, t2는 Context Switching 이라거나 Event 방식으로 기다리지 않고 Busy waiting 하는것인지 궁금해서 문의 남깁니다.
제가 구글링을 통해 찾아본 해외 자료 느낌에서는 윈도우 환경과 VS에서 코딩하는 경우 Busy waiting을 하지 않는것처럼 나오는데, 만약 그렇다면 이것이 뒷 강의에서 설명하는 Lock 구현 방식중 2번의 Context Switching인건지 3번의 Event 방식인지도 궁금합니다.
답변 1
4
사실 표준에 뭘 어떻게 만들어야한다는 제약은 없기 때문에
운영체제나 컴파일러 버전 등에 따라 다를 수 있습니다.
mutex가 Windows 환경에선 Critical Section으로 되어 있다는 글도 보이는데
CriticalSection 또한 초반엔 아니다가 나중에 스핀락 방식을 채택하는등 많은 변동이 있었습니다.
따라서 정확히 뭐다 라고 말하긴 힘들 것 같네요.