问题 问答题

超市可容纳500人同时购物,有6扇可供出入的门,既可进又可出,每扇门只允许一个人通过,试回答以下问题:
(1)用PV操作及信号量描述进入和离开该超市的算法,使得该超市的购物容量得到最大限度的发挥。
(2)如再加一个限制条件:同一个顾客进出必须通过同一扇门,那么相应算法如何编写

答案

参考答案:(1)定义信号量s,初始值500,代表超市中顾客数量;定义信号量S1、S2、S3、S4、S5和S6,初始值为1,分别代表进出的6扇门。
enter_supermarket()
{
P(S);
选择一扇门i;
P(Si);
进入超市;
V(Si);
}
leave_supermarket()
{
选择一扇门j;
P(Sj);
离开超市;
V(Sj);
V(S);
}
(2)每一个顾客进入超市时用一个变量记下进入的门是哪一扇,将离开时选择同一扇门即可。
enter_supermarket()
{
P(S);
选择一扇门i;
self.door=i;//用变量self.door记下顾客进入的门
P(Si);
进入超市;
V(Si);
}
leave_supermarket()
{
i=self.door;//从变量self.door得到顾客进入的门
P(Si);
离开超市;
V(Si);
V(S);
}

单项选择题
单项选择题