操作系统-父亲放苹果

题目:桌上有一空盘,允许存放一只水果,爸爸可以向盘中放苹果,也可以向盘中放桔子,儿子专等着吃盘中的桔子,女儿专等着吃盘中的苹果,规定当盘空时一次只能放一只水果供吃者用,请用P、V原语实现爸爸、儿子和女儿三个并发进程的同步。

解:在本题中,应设置三个信号量S、So、Sa。

信号量S表示盘子是否为空,其初值为1;

信号量So表示盘中是否有桔子,其初值为0;

信号量Sa表示盘中是否有苹果,其初值为0。

同步描述如下:

semaphore S=1,Sa=0,So=0; 
father: 
while(true) 
{
P(S); 
将水果放入盘中; 
if(放入的是桔子)V(So); 
else V(Sa); 
};

son:
while(true) 
{ 
P(So); 
从盘中取出桔子; 
V(S); 
吃桔子; 
};

daughter:
while(true) 
{ 
P(Sa); 
从盘中取出苹果; 
V(S); 
吃苹果; 
};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值