独木桥
来源:锐游网
1. 将独木桥的两个方向分别标记为A和B;并用整形变量countA和countB分别表示A、B方向上已在独木桥上的行人数,初值为0;再设置三个初值都1的互斥信号量:SA用来实现对countA的互斥访问,SB用来实现对countB的互斥访问,mutex用来实现两个方向的行人对独木桥的互斥使用。 则具体描述如下:
VarSA,SB,mutex:semaphore:=1,1,1; CountA,countB:integer:=0,0: begin parbegin
process A: begin wait(SA);
if(countA=0) then wait(mutex); countA:=countA+1; signal(SA); 过独木桥; wait(SA);
countA:=countA-1;
if (countA=0) then signal(mutex); signa(SA); end
process B: begin wait(SB);
if(countB=0) then wait(mutex); countB:=countB+1; signal(SB); 过独木桥; wait(SB);
countB:=countB-1;
if (countB=0) then signal(mutex); signa(SB); end parend end
因篇幅问题不能全部显示,请点此查看更多更全内容