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

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%
帮助的人:407万
展开全部
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次的啊。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式