volatile
if( value ){
printf( "True\n" );
}else{
printf( "False\n" );
}
if( value ){
printf( "True\n" );
}else{
printf( "False\n" );
如果在第二个if之前,value被信号处理函数异步修改,那么应该产生不同的结果。
可是如果value没有被声明成volatile , 那么代码段可能被优化为:
if( value ){
printf( "True\n" );
printf( "True\n" );
}else{
printf( "False\n" );
printf( "False\n" );
}
既可能出现非预期的结果
Last updated
Was this helpful?