公交车司机与售票员进程协同活动问题 PV操作

公交车司机与售票员进程协同活动问题 PV操作

设公共汽车上,司机和售票员的活动分别是:
司机的活动: 启动车辆;正常行车;到站停车;
售票员的活动:关车门;售票;开车门;
在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用信号量和P、V操作实现它们的同步。

解:
在汽车行驶过程中,司机活动与售票员活动之间的同步关系为:售票员关车门后,向司机发开车信号,司机接到开车信号后启动车辆,在汽车正常行驶过程中售票员售票,到站时司机停车,售票员在车停后开车门让乘客上下车。因此司机启动车辆的动作必须与售票员关车门的动作取得同步;售票员开车门的动作也必须与司机停车取得同步,
在本题中,应设置两个信号量:S1、S2。S1表示是否允许司机启动汽车,其初值为0;S2表示是否允许售票员开门,其初值为0。用P、V原语描述如下:
int Sl=0; int S2=0;
main()
{ cobegin
driver();
busman();
coend

driver()
{ while(1) {
P(S1);
启动车辆;
正常行车;
到站停车;
V(S2);


busman()
{while(1){
关车门;
V(S1);
售票;
P(S2);
开车门;
上下乘客;
}
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值