静态constexpr类成员变量对多线程读取安全吗?

时间:2018-10-16 21:34:43

标签: c++ multithreading c++11 thread-safety

由多个线程同时读取一个类的静态constexpr成员变量是否安全?例如:

class A{
  public:
    //some code here
  private:
    static constexpr std::size_t x_ = 99;

}

如果我创建了多个类A类型的对象,每个对象都由不同的线程使用,则对于每个C ++ 11线程来说,独立读取成员变量x_而不使用任何变量都是安全的锁定机制?

2 个答案:

答案 0 :(得分:7)

是的,这很安全。当您有多个线程,并且其中至少一个线程是写程序并且没有同步时,就会发生数据争用。如果您的线程都不是编写者(并且您不能,因为它是const),那么您就无法进行数据竞争。

答案 1 :(得分:5)

多次并行读取始终是线程安全的,只要不进行并行写入即可。