中易网

假设公共汽车上有一位司机和一位售票员,请分析司机和售票员之间的同步关系,并用P,V操作实现

答案:2  悬赏:20  
解决时间 2021-01-12 07:24
  • 提问者网友:戎马万世
  • 2021-01-11 16:41
假设公共汽车上有一位司机和一位售票员,请分析司机和售票员之间的同步关系,并用P,V操作实现
最佳答案
  • 二级知识专家网友:春色三分
  • 2021-01-11 18:01
答:lt is half an price。
全部回答
  • 1楼网友:雾月
  • 2021-01-11 19:03

第一步:确定进程间的关系.售票员关车门后,要向司机发开车信号,司机接到开车信号后才能启动车辆.在汽车正常行驶过程中售票员售票,到站时司机停车,售票员在车停后开车门,让乘客上下车.因此司机启动车辆的动作必须与售票员的动作取得同步;售票员开车门的动作也必须同司机停车取得同步.
第二步:确定信号量及其值.由于司机与售票员之间要互通消息,司机进程设置一个私有信号量run,用于判断是否关车门,司机能否启动车辆,初值为1.售票员进程设置一个私有信号量stop,用于判断是否停车,售票员是否能够开车门,初值为0
第三步:确定P(wait)、V(signal)操作的位置
司机操作中,是否关门?没关则等待,这是一个P操作,P(run);
司机操作中,设立停车标志,这是一个V操作,V(stop);
售票员操作中,是否停车?没停则等待,这是一个P操作,P(stop);
售票员操作中,设立关门标志,这是一个V 操作,V(run)
lstop ,run:semaphore
run:=1; //是否关车门
stop:=0; //是否停车
Driver:begin cobegin
driver:begin
L1:P(run);
启动车辆;
正常行车;
到站停车;
V(stop);
goto L1;
end;
Conductor:begin
L2:上乘客;
关车门;
V(run);
售票;
P(stop);
开车门;
下乘客;
goto L2;
end;
coend;
end;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息