操作系统急急急急急急!!!!!!!!!!
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)起什么作用,急急求解决... 展开
1个回答
展开全部
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次的啊。
苏州神码物信智能科技
2024-08-22 广告
2024-08-22 广告
苏州神码物信智能科技有限公司专注于提供高效、智能的出入管理系统解决方案。该系统集成人脸识别、二维码扫描、RFID等先进技术,实现无接触快速通行,有效提升门禁管理效率与安全性。通过云端平台实时监控与数据分析,助力企业、园区、校园等场所优化管理...
点击进入详情页
本回答由苏州神码物信智能科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |