이중 조건 큐의 생산 경로는 notFull에서 notEmpty로 간다

한 경로 안에서 검사·삽입·신호가 같은 lock으로 연결됩니다.

  1. 1

    lock

    queue 상태 고정

  2. 2

    full?

    while이면 notFull.await

  3. 3

    enqueue

    원소 삽입

  4. 4

    notEmpty

    소비자 한 명 signal

  5. 5

    unlock

    재경쟁 허용

핵심: 삽입 뒤 생산자용 notFull을 깨우면 소비자는 계속 잠든 채 남습니다.