目录
题目描述
家里有一个盘子
爸爸给盘子里面放苹果,女儿吃苹果
妈妈给盘子里面放桔子,儿子吃桔子
互斥:
爸爸妈妈儿子女儿互斥盘子
设互斥信号量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)