PV操作经典例题——银行业务办理问题

例:某银行提供1个服务窗口和10个供顾客等待的座位,顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用,当营业员空闲时,通过叫号选取一位顾客,并为其服务。
解析:

  • 取号机每次只允许一人使用,需设置互斥信号量mutex。
  • 座位只有十个,需设置资源信号量seat=10。
  • 叫号工作人员要知道目前挂号人数,需设置资源信号量count

设:mutex=1; seat=10; count=0;

void customer()
{
	while(true)
	{
		wait(seat);
		wait(mutex);
		//此阶段为顾客取号时期
		signal(mutex);
		signal(count);//取号数加1
		//此阶段为回到座位等待被叫号服务,一旦被叫号,则失去座位控制权
		signal(seat);
		//此阶段获得服务
	}
}
void assistant()
{
	wait(count);//叫号
	//服务
}
  • 5
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值