问题描述:
公共汽车上,司机和售票员的活动分别是:
司机的活动:启动车辆;正常行车;到站停车。
售票员的活动:关车门;售票;开车门。
在汽车不断的到站、停站、行驶过程中,用信号量和P,V操作实现它们的同步。
问题解决;
我们可以使用两个信号量来实现司机与售票员间的同步,具体实现形式如下:
司机进程:
司机开车;
v(s2);
p(s1);
汽车离站;
售票员进程:
售票员售票;
p(s2);
售票员开车门;
乘客上下车;
售票员关车门;
v(s1);
多线程实现同步:
#include
#include
#include
sem_t semid1,semid2;
void* driver()
{
while(1)
{
printf("\n");
printf("driver开车\n");
sem_post(&semid1);
sem_wait(&semid2);
printf("driver离站\n");
}
}
void* passenger()
{
whi