在多线程环境下,控制型的全局变量必须定义为volatile,否则在以下情况中,程序会出错。
while( bStop )
{
return TRUE;
}
在release版本中,编译器会自动优化以上代码,将bStop的值放在寄存器中,每次只读寄存器的值(实际上内存中该变量已经发生变化),导致循环无法返回。
在多线程环境下,控制型的全局变量必须定义为volatile,否则在以下情况中,程序会出错。
while( bStop )
{
return TRUE;
}
在release版本中,编译器会自动优化以上代码,将bStop的值放在寄存器中,每次只读寄存器的值(实际上内存中该变量已经发生变化),导致循环无法返回。