(资料图片仅供参考)
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); //释放信号量}。
本文就为大家分享到这里,希望小伙伴们会喜欢。
上一篇:不到3折!这只股票估值被基金公司大砍 天天热议
下一篇:最后一页
凡本网注明“XXX(非汪清新闻网)提供”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和其真实性负责。
1、智子疑邻的寓意客观分析:持有相同意见的人因身份不同及与主人亲疏
2023-06-09 11:50
亚交谊舞曲下载网,j交谊舞曲免费下载这个问题很多朋友还不知道,来为
2023-06-09 10:51
1、湖州市第一中学2016年高考,美术上本科线147人,本科率88%;音乐上
2023-06-09 10:29
电镀设备龙头东威科技(行情688700,诊股)(688700 SH)境外上市即将落地
2023-06-09 10:36
导读1 该呼叫被转移到另一个移动电话。如果电话来了,就有人接。两个号
2023-06-09 10:35
导读1、很合适。但还是要看你叫什么流派。2、31智慧是最高的3、拍卖行
2023-06-09 10:30
导读1、选择默认值打开软件2、修复Office软件3、删除Office美化软件4、
2023-06-09 10:24
证券时报e公司讯,截至6月8日,上交所融资余额报7916 52亿元,较前一交
2023-06-09 09:27
沃森生物:将尽可能多地借助AI等技术支持产品研发:沃森生物(300142)
2023-06-09 09:28
1、你先进入黑石塔,进去之后向右走,你会发现一个断掉的台阶。2、往下
2023-06-09 09:31