graceful printer 종료는 수용 중단부터 worker 회수까지 이어진다

새 작업을 막고 남은 Queue를 처리한 뒤 대기 중인 worker를 깨워 종료하고 join합니다.

  1. 1

    stop accepting

    새 submit 거부

  2. 2

    drain

    기존 Queue 처리

  3. 3

    wake

    interrupt·poison pill

  4. 4

    worker exit

    loop 종료

  5. 5

    join

    자원·결과 회수

핵심: running flag만 바꾸고 take 대기를 깨우지 않으면 종료가 멈출 수 있습니다.