问答题 有一只铁笼子,每次只能放入一只动物。猎手向笼中放入老虎,农民向笼中放入猪,动物园等待取笼中的老虎,饭店等待取笼中的猪,试用P,V操作写出能同步执行的程序。
【正确答案】
【答案解析】这个问题实际上可看作是两个生产者和两个消费者共享了一个仅能存放一件产品的缓冲器。生产者各自生产不同的产品,消费者各自取自己需要的产品。利用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