cv.wait(lock, pred)를 코드 한 줄로 보지 말고,
락 해제와 재획득이 들어 있는 흐름으로 읽어야 합니다.
1. unique_lock 획득공유 상태를 안전하게 읽기 위해 mutex를 잠급니다.2. predicate 검사조건이 참이면 기다리지 않고 진행합니다.3. wait 대기조건이 거짓이면 락을 풀고 스레드를 잠들게 합니다.4. notify 후 재획득깨어날 때 mutex를 다시 잠근 뒤 반환합니다.5. 조건 참이면 작업큐 pop 같은 임계 영역 작업을 수행합니다.
알림자는 공유 상태를 먼저 바꾸고 notify합니다. 대기자는 깨어난 뒤 상태를 다시 확인합니다.