- var buffer: array[0,..., n -1] of item;
- empty, full mutex : semaphore := n, 0, 1;
- in, out : integer := 0, 0;
- codebegin
- process Pi
- begin
- 生產產品;
- P(empty);
- P(mutex);
- 往buffer[in]放產品
- in := (in + 1) % n;
- V(mutex)
- V(full);
- end
- process Ci
- begin
- P(full);
- P(mutex);
- 從buffer[out]取產品
- out := (out + 1)mod n;
- V(mutex);
- V(empty);
- 消費產品
- end
- codeend