모니터에 진입한다
한 번에 하나의 스레드만 공유 데이터 조작 절차 안에 들어오게 합니다.
mutex모니터는 공유 데이터와 그 데이터를 조작하는 절차를 하나의 동기화 단위로 묶습니다. 진입 시 lock으로 상호 배제를 보장하고, condition variable은 조건이 만족될 때까지 기다렸다가 다시 확인하게 합니다.
한 번에 하나의 스레드만 공유 데이터 조작 절차 안에 들어오게 합니다.
mutex버퍼가 비었는지, 가득 찼는지 같은 논리 조건을 lock을 잡은 상태에서 확인합니다.
predicatewait는 lock을 잠시 놓고 잠들었다가 깨어나면 다시 lock을 획득합니다.
waitsignal은 조건이 참임을 영원히 보장하지 않으므로 while로 predicate를 다시 확인합니다.
recheck