1. 在公共汽车上,为保证乘客的安全,司机和售票员需要协调工作:停车后才能开门,关门后才能行车。通过PV操作来实现他们之间的协调。
2. 定义两个变量S1和S2:S1表示是否允许司机启动汽车,S2表示是否允许售票员开门。
3. 司机进程(driver()):
- 司机进程不断循环,等待操作。
- 司机请求启动汽车(P(S1)),启动汽车。
- 司机正常行车。
- 司机到达站点,停车。
- 司机释放开门变量,通知售票员可以开门(V(S2))。
4. 售票员进程(busman()):
- 售票员进程不断循环,等待操作。
- 售票员关闭车门。
- 售票员释放开车变量,通知司机可以开车(V(S1))。
- 售票员请求开门(P(S2))。
- 售票员打开车门。
- 售票员协助乘客上下车。