Semaphore는 실제로 매우 오래된 동기화 도구이다. 현재는 monitor라는 동기화 도구를 주로 사용한다.
Monitor
특징
- 동기화 도구로서 편리하고 효율적인 기능을 제공하는 높은 수준의 추상화된 데이터 형태이다.
- 공유 자원에 접근하기 위한 키 획득과 자원 사용 후 해제를 모두 모니터에서 처리한다.
- 동시에 1개의 프로세스만 모니터 내부에서 활동할 수 있다.
Condition Variable
- condition x, y
- x.wait()
- x.signal() 함수가 호출되기 전 까지 shared data 내부의 대기 큐에서 대기한다.
- x.signal()
- shared data 내부의 대기 큐에 프로세스 존재 시, 해당 큐에서 꺼내어 실행된다.