在公交车上,司机的工作是启动车辆、行车、到站停车,售票员的工作是售票、开车门、关车门,如此反复。用信号量的P、V操作协调司机和售票员工作的代码如下,其中用两个信号量S1、S2分别表示是否可以开车和是否可以开门,试用对信号量的P、V操作填充括号,以构成完整代码,并给出信号量S1、S2的初值。 司 机 售票员 P(S1) 售票 启动车辆 ( ② ) 行车 开车门 到站停车 关车门 ( ① )(S2) ( ③ ),为什么S1初始值为1,S2初始值为0,V(S2)又代表什么
时间: 2024-02-10 19:08:32 浏览: 111
模拟公交车运行(司机,售票员活动)
5星 · 资源好评率100%
完整代码如下,S1的初值为1,S2的初值为0:
```
// 初始化信号量
int S1 = 1; // 可以启动车辆
int S2 = 0; // 不能开车门
// 司机的代码
P(S1); // 等待可以启动车辆
启动车辆;
行车;
到站停车;
V(S2); // 可以开车门
// 售票员的代码
P(S2); // 等待可以开车门
开车门;
关车门;
V(S1); // 可以启动车辆
```
S1的初值为1,表示一开始司机可以启动车辆,不需要等待。S2的初值为0,表示一开始售票员不能开车门,必须等待司机停车后才能开门。V(S2)表示售票员开门后,释放了S2,表示可以启动车辆了。
阅读全文