在一辆公共汽车上,司机和售票员各行其职,司机负责开车和到站停车;售票员负责售票和开、关门,当售票员关好车门后,司机才能继续开车行驶。试用P、V操作实现司机与售票员之间的同步。
这题怎么做?请大家帮帮忙啊
在一辆公共汽车上,司机和售票员各行其职,司机负责开车和到站停车;售票员负责售票和开、关门,当售票员关好车门后,司机才能继续开车行驶。试用P、V操作实现司机与售票员之间的同步。
这题怎么做?请大家帮帮忙啊
解法一:
struct semaphore s1,s2=0,0;
cobegin
void driver(void)
{
while(TRUE){
p(s2);
启动车辆;
正常行车;
到站停车;
V(s1);}
}
void conductor(void)
{
while(TRUE){
上、下乘客;关车门;
V(s2);
售票;
P(s1);
开车门;上、下乘客;}
}
coend
解法二:
struct semaphore s1,s2=1,0;
cobegin
void driver(void)
{
while(TRUE){
P(s2);
启动车辆;
正常行车;
到站停车;
V(s1);}
}
void conductor(void)
{
while(TRUE){
P(s1);
开车门;
上、下乘客;
关车门;
V(s2);售票;}
}
Coend