닫을 수 있는 큐의 소비 판정

빈 상태와 종료 상태를 분리해야 접수된 작업을 모두 배출하고 끝낼 수 있다.

  1. 작업 확인

    항목이 있으면 닫힘 여부와 관계없이 하나를 가져간다.

  2. 일시적 빈 큐

    열린 상태라면 다음 제출을 기다린다.

  3. 종료 요청

    새 제출을 금지하고 잠든 소비자를 모두 깨운다.

  4. 배출 완료

    닫혔고 비어 있을 때만 종료 결과를 반환한다.

핵심: 닫힘만 보고 즉시 종료하면 큐에 남은 작업이 유실된다.