哲学家就餐问题解决方案_哲学家就餐问题
(相关资料图)
1、两个地方应该是pv操作,pv都是操作元语,不可中断p操作是将信号量-1v操作是将信号量+1pv一定要配对使用哲学家进餐可以通过信号量机制解决。
2、避免死锁注释如下:Void test(int i) //测试哲学家i是否满足eating条件{ if(state[i]==HUNGRY) //状态为hungry且左右均未在eating状态,即筷子空闲 && (state[(i-1)%5]!=EATING) &&(state[(i+1)%5]!=EATING) { state[i]=EATING; //设置哲学家i的状态标志为eating V(&s[i]);(不懂,什么意思) //s[i]初始化为0。
3、表示能否eating的信号量,V之后s[i]=1,可以 } //通过P操作后进入eating。
4、否则在P(s[i])处阻塞}state[i]=THINKING; //初始化状态位s[i]=0; //初始化s[i] 信号量Void philosopher(int i){ while (true) { 思考; P(mutex);(还有这个地方也不太懂) //对mutex进行P操作,即加锁,防止过 //多进程同时执行造成死锁 state[i]=HUNGRY; //设置i状态 test (i); //测试是否可以进eating。
5、如可以,设置 //相应标志位和信号量 V(mutex); //释放信号量,其它进程可执行P(mutex) P(s[i]); //测试是否可以eating //以下为哲学家i的eating过程 拿左筷子; 拿右筷子; 进食; 放右筷子; 放左筷子;} P(mutex); //对mutex加锁。
6、防止多个进程同时对state[i]操作 state[i]=THINKING; //设置i状态 test([i-1]%5); //为左边和右边测试并设置s状态 test([i+1]%5); V(mutex); //释放信号量}。
本文就为大家分享到这里,希望小伙伴们会喜欢。
标签:
头条精选
- 哲学家就餐问题解决方案_哲学家就餐问题2023-06-09
- 即时焦点:辽宁省葫芦岛市2023-06-06 21:12023-06-09
- 云南省临沧市2023-06-06 21:03发布雷电黄2023-06-09
- 世界看点:黄金时代迅雷下载1080(黄金时代2023-06-09
- favorite subject(favorite)2023-06-09
- 女子公交上强行前门下车:按下“应急按钮”2023-06-09
- 消弧消谐柜作用_什么是消弧柜_每日动态2023-06-09
- 秀发照片_秀发 每日快看2023-06-09
- 坏笑的表情图片(坏笑)_全球微资讯2023-06-09
- 间脑中脑端脑脑的结构图(脑的结构图)2023-06-09
- 网络推广方法大全(网络推广方法)2023-06-09
- 饮食店用什么名字好_饮食店起什么名字好3002023-06-09
- 5寸等于多少厘米照片多大_5寸等于多少厘米.2023-06-09
- 恭喜梅西,铁兄弟官宣加盟!两巨星联手降维2023-06-09
- 今日足坛三大消息!曼城国米已到!成都破纪2023-06-09
- 恐怖momo事件(momo事件)-世界热点2023-06-09
- 今日观点!结拜誓言五人(结拜誓言)2023-06-09
- 北京五星级酒店哪家蛋糕好吃_北京五星级酒2023-06-09
- 全球即时看!favorite subject(favorite)2023-06-09
- 70岁老人应该叫什么(老人70岁称什么) 世2023-06-09
- 当前报道:后进生会议讲话稿(后进生)2023-06-09
- 汇顶科技:6月8日融资买入961.56万元,融资2023-06-09
- 新泉股份:6月8日融资净买入383.69万元,连2023-06-09
- 崩坏星穹铁道银狼物理击破队怎么培养|环球2023-06-09
- 环球速读:云顶之弈S9冰冻射手阵容怎么搭配2023-06-09
- 天天速看:虎娘日报:设计师透露泽丽改动 2023-06-09
- 璞泰来(603659):6月8日北向资金增持156.2023-06-09
- 焦点短讯!百胜电子发票平台官网(百胜电子2023-06-09
- 斯柯达晶锐1.4发动机正时链条怎样安装图解2023-06-09
- 任天堂游戏机switch_任天堂switch怎么下载游戏2023-06-09