用信号量解决司机和售票员之间的同步问题
一、问题描述
设公共汽车上有一位司机和一位售票员,它们的活动如下:
司机 | 售票员 |
---|---|
启动车辆 | 关车门 |
正常行车 | 售票 |
到站停车 | 开车门 |
请分析司机与售票员之间的同步关系,如何用PV操作实现。
二、问题求解
设置信号量S1、S2用来控制司机和售票员的行为,初值都为0;
代码简要描述:
司机进程:
void driver(){
while(1){
P(S1);
启动车辆;
正常行驶;
到站停车;
V(S2);
}
}
售票员进程:
void conductor{
while(1){
关门;
V(S1);
售票;
P(S2);
开门;
}
}
void main(){
driver();
conductor();
}