하나의 Object 대기 집합에 섞인 역할

notify는 생산자와 소비자 중 필요한 역할을 골라 준다는 보장이 없다.

단일 wait set

가득 참 생산자

빈칸이 생길 때까지 대기한다.

빈 큐 소비자

항목이 들어올 때까지 대기한다.

notify 선택

집합 안의 임의 스레드 하나가 재경쟁한다.

오선택 결과

같은 역할이 깨어나 조건을 못 바꾸고 되돌아간다.

핵심: 역할을 구분하지 못하는 신호는 생존성을 명세되지 않은 선택에 맡긴다.