동기화 관련 질문입니다.

zasxer의 이미지

최근 pc는 다중 프로세스 다중 쓰레드를 지원하는데, 쓰레드가 동시에 진행되는 과정에서 같은 공유자원에 대한 뮤텍스나 atomic 자료형을 쓰면 보호를 할 수 있게 되는 거로 알고 있습니다.

여기서 궁금한게, 두 쓰레드가 동시에 1나노초도 차이가 안나고 똑같이 뮤텍스락을 한다면 결국 공유자원에 대한 보호가 안되는 거 아닌가요?

라스코니의 이미지

1 나노초라는 것이 하나의 쓰레드가 뮤텍스를 걸고 바로 다음 CPU 사이클에서 다른 쓰레드가 뮤텍스를 거는 상황과 같이 짧은 시간으로 이해하겠습니다.

뮤텍스를 걸때 사용하는 특별한 명령어(instruction)가 있습니다. test and set instruction(http://faculty.salina.k-state.edu/tim/ossg/IPC_sync/ts.html)이라고 하는데 거의 모든 현대 프로세서에서 지원하고 있으며 2가지 동작(test, set)을 하지만 그 동작 중에 선점당하지 않는 특징을 가지고 있습니다.

그래서 한 클럭이라도 빨리 뮤텍스를 걸었다면 그 쓰레드가 제어권을 가지게 되는 것입니다.