condition variable

조건 변수는 상태가 바뀔 때까지 스레드를 잠들게 한다

std::condition_variable, std::unique_lock, wait(), notify_one(), notify_all()은 생산자와 소비자 흐름을 연결합니다.

wait()

뮤텍스를 잠시 풀고 조건이 바뀔 때까지 대기합니다

깨어난 뒤에는 다시 잠금을 잡고 조건을 검사합니다.

predicate

조건 변수 predicate 확인

ready 플래그 같은 공유 상태가 실제 기준이 됩니다.

notify_one

대기 중인 스레드 하나를 깨우는 알림입니다

작업 하나를 소비자 하나가 처리하는 구조에 어울립니다.

notify_all

조건 변수 notify_all

producer_done처럼 종료 플래그를 알릴 때 자주 사용됩니다.

unique_lock condition_variable은 lock_guard보다 유연한 잠금 객체가 필요합니다.
타임아웃 wait_for와 wait_until은 영원히 기다리는 상황을 피하게 합니다.
공유 상태 알림 자체보다 보호된 변수 값이 실제 진행 조건입니다.