操作系统急急急急急急!!!!!!!!!!

intx=0;intturn=0;voidfunc1(){inti=0;for(i=0;i<50;i=i+1){while(turn!=0);x=x+1;/*临界区*/t... int x=0;
intturn=0;
void func1()
{
int i=0;
for(i=0;i<50;i=i+1)
{
while(turn!=0);
x=x+1; /*临界区*/
turn=1;
}
}
void func2()
{
int i=0;
for(i=0;i<50;i=i+1)
{
while(turn!=1);
x=x+1; /*临界区*/
turn=0;
}
}
intmain()
{
cobegin{func1();func2();}
cout<<"x=="<<x<<endl;
return 0;
}
这个程序在baci中运行结果为100 请问里面的while(turn!=0) 和while(turn=0)起什么作用,急急求解决...
展开
 我来答
我喜欢看火影ed
2015-10-18 · TA获得超过880个赞
知道小有建树答主
回答量:713
采纳率:76%
帮助的人:406万
展开全部
while(turn!=0);注意这里有个分号,也就是说,turn!=0的时候什么都不做。

意思就是,直到turn ==0时,才跳出循环,执行下面的语句,否则,一直循环。
同理,while(turn==0);就是直到turn!=0的时候跳出循环。
追问
这个不是c语言 是操作系统但是用C语言写的符合c语言语法  如果什么都不做结果不应该是98么应该各少做一次啊  为什么运行的结果是100?
追答
for(i=0;i<50;i=i+1)
{
while(turn!=0);
x=x+1; /*临界区*/
turn=1;
}
无论是不是并发,这个for(){}循环按理说应该是要执行50次的,每次x=x+1;
然后turn相反了,就跳到另一个for()去了。
无论怎样,for()都是要做50+50次的啊。
苏州神码物信智能科技
2024-08-22 广告
苏州神码物信智能科技有限公司专注于提供高效、智能的出入管理系统解决方案。该系统集成人脸识别、二维码扫描、RFID等先进技术,实现无接触快速通行,有效提升门禁管理效率与安全性。通过云端平台实时监控与数据分析,助力企业、园区、校园等场所优化管理... 点击进入详情页
本回答由苏州神码物信智能科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式