问题背景
司机开车,售票员售票,售票员关门后司机才可以开车,司机停车售票员才可以打开车门。
资源分析
共享(冲突)资源:车(car)、门(door)。
售票员的操作:关门售票开门
司机的操作:启动开车停车
信号量的设置
通过分析,开关门,和启动停车均是互斥操作,我们应该设置close_door的初始值为0,这样只有等售票员发出V原语后,驾驶员才会被唤醒,进入启动汽车;stop_bus初始值应该设置为0,使得只有当驾驶员发出V原语后,售票员在会被唤醒,进行开门操作。
伪码描述
bus_conductor:
do{
signal(close_door)
//sell ticket
wait(stop_bus)
//open door
}(true)
bus_driver:
do{
wait(close_door)
//drive
signal(stop_bus)
}while(true)