操作系统急急急急急急!!!!!!!!!!
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)起什么作用,急急求解决... 展开
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)起什么作用,急急求解决... 展开
展开全部
while(turn!=0);注意这里有个分号,也就是说,turn!=0的时候什么都不做。
意思就是,直到turn ==0时,才跳出循环,执行下面的语句,否则,一直循环。
同理,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次的啊。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |