뮤텍스를 잠시 풀고 조건이 바뀔 때까지 대기합니다
깨어난 뒤에는 다시 잠금을 잡고 조건을 검사합니다.
std::condition_variable, std::unique_lock, wait(), notify_one(), notify_all()은 생산자와 소비자 흐름을 연결합니다.
깨어난 뒤에는 다시 잠금을 잡고 조건을 검사합니다.
ready 플래그 같은 공유 상태가 실제 기준이 됩니다.
작업 하나를 소비자 하나가 처리하는 구조에 어울립니다.
producer_done처럼 종료 플래그를 알릴 때 자주 사용됩니다.