생산자
P(empty), P(mutex) 뒤 버퍼에 넣습니다.
세마포어는 정수값과 대기 큐로 임계구역 진입 순서를 조절합니다. 생산자 소비자 문제는 empty, full, mutex 세 값을 함께 봅니다.
| 세마포어 | 의미 |
|---|---|
| empty | 버퍼의 빈 칸 수를 나타내며 생산자가 먼저 확인 |
| full | 채워진 칸 수를 나타내며 소비자가 먼저 확인 |
| mutex | 버퍼 조작 임계구역을 한 번에 하나로 제한 |
empty와 full은 개수를 세는 카운팅 세마포어이고, mutex는 임계구역 출입을 잠그는 이진 세마포어로 읽으면 됩니다.
P(empty), P(mutex) 뒤 버퍼에 넣습니다.
V(mutex), V(full)로 소비자를 깨울 수 있게 합니다.
P(full), P(mutex) 뒤 버퍼에서 꺼냅니다.
V(mutex), V(empty)로 생산자가 넣을 칸을 돌려줍니다.