[操作系统]生产者消费者题变形

目录

题目描述

互斥

同步

变形

同步


题目描述

家里有一个盘子

爸爸给盘子里面放苹果,女儿吃苹果

妈妈给盘子里面放桔子,儿子吃桔子

互斥:

爸爸妈妈儿子女儿互斥盘子

设互斥信号量mx初=1

同步:

1盘子中没有苹果时

当且仅当爸爸放苹果 女儿取苹果

apple初=0

2盘子满时

当且仅当女儿或者儿子取爸爸妈妈都可以用

empty初=0

3盘子没桔子

当且仅当妈妈放桔子 女儿取桔子

orange初=0

appple+empty+orange=2//恒成立

爸爸 :

p(empty) 

p(mx) 

放苹果

v(mx)

v(apple)

妈妈

p(empty) 

p(mx) 

放桔子

v(mx)

v(orange)

儿子

p(orange)

p(mx) 

取桔子 

v(mx) 

v(orange)

女儿

p(apple)

p(mx)

取苹果

v(mx) 

v(apple)

变形

盘子只可以放一个水果

也就是说排除了互斥的情况

爸爸给盘子里放水果(苹果或者桔子)女儿或者儿子取

同步

1当盘子空

当且仅当爸爸往盘子中放苹果,女儿才可以从盘子中取苹果,设apple初=0

当且仅当爸爸往盘子中放桔子,儿子才可以从盘子中取桔子,设orange初=0

2当盘子满时

当且仅当女儿或者儿子从盘子里面取水果爸爸才可以放水果入盘子

爸爸

p(empty) 

放水果 

if(放桔子) {

v(orange) 

}

if(放苹果){

v(apple)

}

女儿

p(apple) 

取苹果

v(empty)

儿子

p(orange) 

取桔子

v(empty)

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值