我有一个同时访问bool的类。但是在我的情况下,它只在构造函数中初始化为false,然后设置为false。我是否正确地相信即使比赛可能会发生,结果也是有效和定义的?因为整个bool不必写入以便“!isStopping_”评估为真。
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_;
};
答案 0 :(得分:3)