类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
资料说volatile可以避免优化,InterlockedIncrement则可以安全的在多线程中操作数据。
我有一个标志变量,如下:
volatile long interrupt_;
在2个线程中都可能会改变它的值,于是用InterlockedIncrement和InterlockedDecrement进行改变值的操作。
但是,编译不过去,因为InterlockedIncrement的参数是long型,而不能用volatile long。
我用的是VC6企业版,加SP5。
我看了MSDN6.0,声明为
LONG InterlockedIncrement(
LPLONG lpAddend
);
MSDN2002的声明为
LONG InterlockedIncrement(
LPLONG volatile lpAddend // variable to increment
);
两者不一样。
我是否应该去掉volatile,去掉的话是否会被优化而导致不安全?
网友回答:
mark