首页 > 试题广场 >

某商场开放入口自由进入,同时在唯一出口处设有收银台 、由唯一

[问答题]
某商场开放入口自由进入,同时在唯一出口处设有收银台 、由唯一的一个收银员负责收款业务。顾客在商场里面自由购 物后都须在出口收银台前排队和完成缴款手续后方可离开。请 用记录型信号量机制描述顾客在商场购物的全过程。提示:收 银员亦须给出描述。(15分)
推荐
解: semaphore counter,mutex=1;用来设置互斥结账的信号量
int empty=N;
int guest=0;//初始假设超市没有人
收银员进程:
P(guest);//有人结账 收银 V(counter);//结账完毕了,顾客走了,后面排队的顾客可以结账了
顾客进程:
P(empty);
/*
来之前看看超市时不时能装得下人,若可以装下,就进入超 市购物,若装不下,在超市外面排队等待
*/
进入店内购物; V(guest);//通知收银员,我购物完毕了,打算结账走了,可以 收银了 P(counter);//结完账,放掉收银员的信号量,让其他人结账 V(empty);//离开超市了,超市的顾客容量应该+1 若是不作要求,来多少装多少,那么吧empty相关的操作删除 即可。
发表于 2018-07-18 21:10:54 回复(0)
链接:https://www.nowcoder.com/questionTerminal/1c6661089f3e4c51a82bbf9f0c2dc221
来源:牛客网
解: semaphore counter,mutex=1;用来设置互斥结账的信号量
int empty=N;
int guest=0;//初始假设超市没有人
收银员进程:
P(guest);//有人结账 收银 V(counter);//结账完毕了,顾客走了,后面排队的顾客可以结账了
顾客进程:
P(empty);
/*
来之前看看超市时不时能装得下人,若可以装下,就进入超 市购物,若装不下,在超市外面排队等待
*/
进入店内购物; V(guest);//通知收银员,我购物完毕了,打算结账走了,可以 收银了 P(counter);//结完账,放掉收银员的信号量,让其他人结账 V(empty);//离开超市了,超市的顾客容量应该+1 若是不作要求,来多少装多少,那么吧empty相关的操作删除 即可。
发表于 2022-12-02 20:05:37 回复(0)
1
发表于 2020-05-09 09:04:50 回复(0)