세마포어는 실제로 매우 오래된 동기화 도구이다. 현재에는 모니터(monitor)라는 동기화 도구를 주로 사용하며, 이는 좀 더 고수준의 동기화 기능을 제공한다. QuickSort 알고리즘으로 유명한 C. A. R. Hoare(호어)의 논문에서 처음 등장한 개념이다. 하나의 객체마다 하나의 모니터를 결합할 수 있으며, 모니터와 결합된 객체는 잠금(lock) 기능을 가지고 있어 하나의 쓰레드만 접근 가능한다. 모니터 구조 ![[Pasted image 20221107200903.png]] 위는 모니터 구조를 나타낸 그림이다. 모니터는 공유 자원 + 공유 자원 접근함수로 이루어져 있고, 2개의 큐를 가지고 있다. 각각 mutual exclusion(상호배타) queue, conditional synchroniz..