请用信号量解决以下的过独木桥问题:同一方向的行人可连续过桥,当某一方向有行人通过时,另一方向的行人必须等待;当某一方向无人过桥时,另一方向的行人可以过桥。

admin2016-06-30  10

问题 请用信号量解决以下的过独木桥问题:同一方向的行人可连续过桥,当某一方向有行人通过时,另一方向的行人必须等待;当某一方向无人过桥时,另一方向的行人可以过桥。

选项

答案将独木桥的两个方向分别标记为A和B:并用整形变量countA、countB分别表示A、B方向上已在独木桥上的行人数,他们的初值为0;再设置三个初值都为1的互斥信号量:SA用来实现对countA的互斥访问,SB用来实现对countB的互斥访问,mutex用来实现两个方向的行人对独木桥的互斥使用。则可将A方向行人的动作描述为: wait(SA); if(countA=0)then wait(mutex); countA:=countA+1; signal(SA); 通过独木桥; wait(SA); countA:=countA-1; if(countA=0)then signal(mutex); signal(SA); B方向行人的算法与A方向类似,只需将SA换成SB,countA替换成countB即可。

解析
转载请注明原文地址:https://kaotiyun.com/show/xBAx777K
本试题收录于: 操作系统题库理工类分类
0

最新回复(0)