(8分)某银行提供 1 个服务窗口和 10 个供顾客等待的座位。顾客到达银行时 若有空 座位 则到取号机
顾客,座位,银行
已帮助 人
(8分)某银行提供 1 个服务窗口和 10 个供顾客等待的座位。顾客到达银行时,若有空 座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业 员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下: 某银行提供 1 个服务窗口和 10 个供顾客等待的座位。顾客到达银行时,若有空 座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业 员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下: cobegin { process 顾客 i { 从取号机获取一个号码; 等待叫号; 获取服务; } process 营业员 { while(TRUE) { } } }coend 叫号; 为客户服务; 请添加必要的信号量和 P、V(或 wait、signal)操作,实现上述过程中的互斥与同步。 要求写出完整的过程,说明信号量的含义并赋初值。
请帮忙给出正确答案和分析,谢谢!
-
正确答案:
semaphore seets = 10, // 有 10 个坐位的资源信号量
mutex = 1, // 取号机互斥信号量
haveCustom = 0; // 顾客与营业员同步,无顾客时营业员休息.
process 顾客
{
P(seets); // 等空位 P(mutex); // 申请使用取号机 从取号机上取号;
V(mutex); // 取号完毕
V(haveCustom); // 通知营业员有新顾客到来
等待营业员叫号;
V(seets); // 离开坐位
接受服务;
}
process 营业员
{
while(True)
{
P(haveCustom); // 没有顾客则休息 叫号;
为顾客服务;
}
}
