조건 변수

조건 대기 설계 기준

조건 변수는 알림 그 자체보다 공유 상태, 뮤텍스, 프레디케이트가 함께 맞물릴 때 안전합니다.

대기자와 알림자의 협력 흐름

wait loop
waiter 락 획득

공유 상태를 읽기 전에 unique_lock으로 보호합니다.

predicate 조건 확인

큐가 비었는지, 종료 플래그가 켜졌는지처럼 실제 상태를 검사합니다.

sleep 락 해제 후 대기

wait는 잠자는 동안 뮤텍스를 풀어 생산자가 진입할 수 있게 합니다.

notifier 상태 변경 후 알림

데이터를 넣거나 플래그를 바꾼 뒤 notify_one 또는 notify_all을 호출합니다.

recheck 깨어난 뒤 재검사

깨어났다는 사실만 믿지 말고 프레디케이트가 참일 때만 진행합니다.