【正确答案】
【答案解析】这个问题实际上可看作是两个生产者和两个消费者共享了一个仅能存放一件产品的缓冲器。生产者各自生产不同的产品,消费者各自取自己需要的产品。利用P,V操作编程为:
begin
semaphore:S,S1,S2;
Parbegin
Process hunter
begin
L1:have a tiger;
P(S);
put a tiger;
V(S1);
go to L1;
end;
Process peasant
begin
L2:have a pig;
P(S);
put a pig;
V(S2);
go to L2;
end;
Process hotel
begin
L3:P(S1);
get a pig;
V(S);
eat a pig;
go to L3;
end;
Process zoo
begin
L4:P(S2);
get a tiger;
V(S);
eat a tiger;
goto L4;
end;
parend