var N2S,S2N,Bridge:semaphore //定义北向南,南向北,桥三个信号量;
Ncount,Scount:integer //定义正在过桥车辆数量
N2S.value=1;
S2N.value=1;
Ncount=0;
Scount=0;
//北向南方法
function N2S:
Begin
Repeat
P(N2S); //占用北向南信号量
if(Ncount==0){ //判断北向南车辆已经完全过桥时,占用过桥信号量
P(Bridge);
}
Ncount++;
V(N2S);
------通过大桥过桥
P(N2S);
Ncount--;
if(Ncount==0){
V(Bridge);
}
V(N2S);
END