发布网友 发布时间:2023-04-30 04:23
共1个回答
热心网友 时间:2023-10-07 11:22
某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待.每个购票者可看成一个进程. 分析:第一步:确定进程间的关系.售票厅是各进程共享的公有资源,当售票厅中多于20名购票者时,厅外的购票者需要在外面等待.所以进程间是互斥的关系.第二步:确定信号量及其值.只有一个公有资源:售票厅,所以设置一个信号量s.售票厅最多容纳20个进程,即可用资源实体数为20,s的初值就设为20. 实现:begin s:semaphore; s:=20; cobegin process PI(I=1,2,……) begin P(s); 进入售票厅; 购票; 退出; V(s); end; coend 当购票者进入售票厅前要执行P(s)操作,执行后若s大于或等于零,说明售票厅的人数还未满可进入.执行后若s小于零,则说明售票厅的人数已满不能进入.这个实现中同时最多允许20个进程进入售票厅购票,其余进程只能等待 .