某银行提供1个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下:
//首项应该定义信号量
semaphore mutex=1,seats=10,service =0;
semaphore mutex = 1,service = 0,seets = 10;
//然后开始写进程
//顾客进程
void customers(){
P(seats); //首先需要进行申请座位
P(mutex); //顾客之间的取号进程是互斥的,用metex来实现
取号;
V(mutex);
V(service);//等待叫号
等待获取服务;
}
//`营业员进程
void assistant(){
P(service); //提供服务
叫号并且为客户提供服务;
V(seats); //生产座位
}
void main(){
cobegin
customers();
assistant();
coend
}