진입 잠금
모니터 메서드에 들어온 스레드는 공유 상태를 보호하는 락을 획득한다.
exclusive entry모니터는 공유 상태와 동기화 연산을 한곳에 묶고, 조건 변수는 상태가 만족될 때까지 기다리는 프로토콜을 제공한다.
모니터 메서드에 들어온 스레드는 공유 상태를 보호하는 락을 획득한다.
exclusive entry조건이 거짓이면 condition wait가 락을 놓고 잠들었다가 깨어나며 다시 락을 잡는다.
wait releases lock허위 각성이나 경쟁 스레드 때문에 깨어난 뒤 조건을 반드시 다시 검사한다.
spurious wakeup철학자 문제는 젓가락 획득 순서와 대기 조건을 어떻게 설계하는지 보여준다.
deadlock avoidancepthread_mutex_lock(&m);
while (!ready) pthread_cond_wait(&cv, &m);
consume();
pthread_mutex_unlock(&m);