请在 下方输入 要搜索的题目:

a,b两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:(1)当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab段外等待;(2)当ab之间无车辆在行驶时,到达a点(或b点)的车辆可以进入ab段,但不能从a点和b点同时驶入;(3)当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进入ab段时,应让另一方向等待的车辆进入ab段行驶。请用信号量为工具,对ab段实现正确管理以保证行驶安全。

a,b两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:(1)当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab段外等待;(2)当ab之间无车辆在行驶时,到达a点(或b点)的车辆可以进入ab段,但不能从a点和b点同时驶入;(3)当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进入ab段时,应让另一方向等待的车辆进入ab段行驶。请用信号量为工具,对ab段实现正确管理以保证行驶安全。

发布时间:2025-01-18 00:48:17
推荐参考答案 ( 由 快搜搜题库 官方老师解答 )
联系客服
答案:此题是读者-写者问题的变形。设置3个信号量S1、S2和Sab,分别用于从a点进入的车互斥访问共享变量ab(用于记录当前ab段上由a点进入车辆的数量),从b点进入的车互斥访问共享变量ba(用于记录当前ab段上由b点进入车辆的数量)和a、b点的车辆互斥进入ab段。3个信号量的初值分别为1、1和1,两个共享变量ab和ba的初值分别为0、0。semaphore S1=1,S2=1,Sab=1;int ab=ba=0;void Pab(){while(1){wait(S1);if(ab==0)wait(Sab);ab=ab 1;signal(S1);车辆从a点驶向b点;wait(S1);ab=ab-1;if(ab==0)signal(Sab);signal(S1);}}void Pba(){while(1){wait(S2);if(ba==0)wait(Sab);ba=ba 1;signal(S2);车辆从b点驶向a点;wait(S2);ba=ba-1;if(ba==0)signal(Sab);signal(S2);}}main(){cobegin{Pab();Pba();}}
专业技术学习
相关试题
专业技术学习
搜搜题库系统