不挂科搜题免费

问题:

请添加必要的信号量和 P、 V(或 wait()、 signal())操作,实现上述过程中的互斥与同

答案:

1)互斥资源:取号机(一次只一位顾客领号),因此设一个互斥信号量 mutex。2)同步问题:顾客需要获得空座位等待叫号,当营业员空闲时,将选取一位顾客并为其服务。空座位的有、无影响等待顾客数量,顾客的有、无决定了营业员是否能开始服务,故分别设置信号量 empty 和 full 来实现这一同步关系。另外,顾客获得空座位后,需要等待叫号和被服务。这样,顾客与营业员就服务何时开始又构成了一个同步关系,定义信号量 service 来完成这一同步过程。semaphore empty=10; / /空座位的数量semaphore mutex=1; //互斥使用取号机semaphore full=0; //已占座位的数量semaphore service=0; //等待叫号process 顾客 i {P (empty) ; //等空位P (mutex) ; //申请使用取号机从取号机上取号;V (mutex) ; //取号完毕V (full) ; / /通知营业员有新顾客P (service) ; / /等待营业员叫号接受服务;}process 营业员{while (True) {P(full) ; //没有顾客则休息V (empty) ; //离开座位V(service) ; / /叫号为顾客服务;}}