wait는 lock을 풀고 잠든 뒤 깨어나면 다시 lock을 얻어 조건을 확인합니다.
모니터 조건 변수 점검 기준
모니터는 lock과 condition variable을 묶어 공유 상태 변경과 대기 조건을 같은 경계 안에 둡니다.
01lock 획득
02조건 검사
03wait 해제
04signal 수신
05재검사
허위 각성과 경쟁 상태 때문에 if가 아니라 while로 조건을 다시 검사해야 합니다.
자원 획득 순서, waiter, timeout 같은 규칙으로 순환 대기를 끊습니다.
bounded queue, worker pool, event loop의 backpressure를 조건 변수로 표현할 수 있습니다.