【正确答案】
【答案解析】思路如下:
type semaphore=monitor;
var acknowledgement1,acknowledgement2,acknowledgement3:boolean;
x,y:condition;
a,b,c:integer;
指挥官:begin
while acknowledgement1==false
or acknowledgement2==false
or acknowledgement3==false
do x.wait;
下达命令;
a:=1;
b:=1;
c:=1;
y.signal;
end
士兵1:begin
while a==0 do y.wait;
接收命令;
acknowledgement1=true;
x.signal;
end
士兵2:begin
while a==0 do y.wait;
接收命令;
acknowledgement2:true;
x.signal:
end
士兵3:begin
while a==0 do y.wait;
接收命令;
acknowledgement3:true;
X.signal;
end
begin
a:=0;
b:=0;
c:=0;
acknowledgement1:=false;
acknowledgement2:=false;
acknowledgement3:=false;
end