我有三个函数
int a=0;void mydlg::funtion1()
{
mydlg::funtion2();
..............
if(a==1)
{
AfxMessageBox("a=1");
}
else
{
AfxMessageBox("a=0");
}
}void mydlg::funtion2()
{
....
....
mydlg::funtion3();
.....
.....
}void mydlg::funtion3()
{
...
a=1;
....
}发现有时会出现 弹出 “a=0”,怎么样保证函数funtion3()调用完毕之后才执行
funtion1()中的“
if(a==1)
{
AfxMessageBox("a=1");
}
else
{
AfxMessageBox("a=0");
}
”
int a=0;void mydlg::funtion1()
{
mydlg::funtion2();
..............
if(a==1)
{
AfxMessageBox("a=1");
}
else
{
AfxMessageBox("a=0");
}
}void mydlg::funtion2()
{
....
....
mydlg::funtion3();
.....
.....
}void mydlg::funtion3()
{
...
a=1;
....
}发现有时会出现 弹出 “a=0”,怎么样保证函数funtion3()调用完毕之后才执行
funtion1()中的“
if(a==1)
{
AfxMessageBox("a=1");
}
else
{
AfxMessageBox("a=0");
}
”
{
if(mydlg::funtion2())
{
..............
if(a==1)
{
AfxMessageBox("a=1");
}
else
{
AfxMessageBox("a=0");
}
}
}BOOL mydlg::funtion2()
{
....
....
if(mydlg::funtion3())
{
.....
.....
return TRUE;
}
return FALSE;
}BOOL mydlg::funtion3()
{
...
a=1;
....
return TRUE;
}
if(a==1)
{
AfxMessageBox("a=1");
}
else
{
AfxMessageBox("a=0");
}
”
之前加 AfxMessageBox("ok");就不会有问题,不是函数的其它地方修改了a,而是函数funtion3()还没有调用完毕之前已经执行
funtion1()中的“
if(a==1)
{
AfxMessageBox("a=1");
}
else
{
AfxMessageBox("a=0");
}
“
int wait =0;void mydlg::funtion1()
{
mydlg::funtion2();
..............
wait=2;
while(a>1)
{;
}
if(a==1)
{
AfxMessageBox("a=1");
}
else
{
AfxMessageBox("a=0");
}
}void mydlg::funtion2()
{
....
....
mydlg::funtion3();
.....
.....
}void mydlg::funtion3()
{
...
a=1;
wait=0;
....
}
funtion1()中的“
if(a==1)
{
AfxMessageBox("a=1");
}
else
{
AfxMessageBox("a=0");
}为什么这样说?
这些代码可以并行执行么?
while(wait>1)
{;
})
可是第一段代码就值得看一下,
看看类里面是不是有同名变量把全局的a给覆盖了
不然有谁可以解释呢?