假设有一个成品仓库,总共能存放8台成品,生产者进程生产产品放人仓库,消费者进程从仓库中取出成品消费。为了防止积压,仓库满的时候就停止生产。由于仓库搬运设备只有一套,故成品的存人和取出只能分别执行,使用P、V操作来实现该方案。
begin mutex,full,empty:semaphore; mutex:=1; empty:=8; full:=0; cobegin process Prod ucer begin 生产一个成品; P(empty); P(mutex); 将产品存人仓库; V(mutex); V(full); end; process Consumer begin P(full); P(mutex); 将产品从仓库取出; V(mutex); V(empty); 消费成品; end; coend; end;