linux信号量和进程的过桥问题

同一方向的车可连续过桥,当某一方向有车过桥时,另一方向的车必须等待,当某一方向无车过桥时,另一方向的

车可以过桥。桥上不允许两车交会,但允许同方向多辆车依次通行(即桥上可以有多个同方向的车)  写了昨天一天也不对,求各路大神帮助

可以参考这篇文章

链接:https://www.nowcoder.com/questionTerminal/f087aa15f6cf403895218d187af6d932
来源:牛客网

Var SA,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

,希望对你有帮助:用信号量解决“独木桥”问题:同一个方向行人可连续过桥,当某一__牛客网 (nowcoder.com)