我有一个同时访问bool的类 . 但是在我的情况下,它只在构造函数中初始化为false,然后设置为false . 我是否正确地相信即使比赛可能会发生,结果也会有效并定义?由于整个bool不必写入以便“!isStopping_”评估为true .
class MyClass
{
public:
MyClass() : isStopping_(false), thread_([=]{Run();}) {}
void Stop()
{
isStopping_ = true;
}
private:
void Run()
{
while(!isStopping_) // data race
{
// Work
}
}
bool isStopping_ ;
boost::thread thread_;
};
1 回答
我不太确定这个问题,但您应该查看“volatile”关键字 . IIRC,它确保在访问时更新 Value .
http://en.wikipedia.org/wiki/Volatile_variable
HTH