생산자 대기
empty를 기다려 빈 칸이 있을 때만 진입한다.
bounded buffer에서는 empty, full, mutex가 각각 빈 칸 수, 채워진 칸 수, 임계구역 접근을 제어한다.
empty를 기다려 빈 칸이 있을 때만 진입한다.
mutex로 버퍼 삽입/삭제를 한 번에 한 스레드만 수행한다.
full을 기다려 데이터가 있을 때만 꺼낸다.
작업 후 empty/full을 반대로 올려 상대를 깨운다.
세마포어 이름을 개수로 읽으면 흐름이 보인다. empty와 full은 자원 수, mutex는 동시에 들어갈 수 있는지의 문제다.