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

ast*_*bia 2 c++ multithreading thread-safety c++11

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

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

}
Run Code Online (Sandbox Code Playgroud)

如果我创建多个Class类型的A对象,每个对象由不同的线程使用,那么每个C++ 11线程可以安全地独立读取成员变量x_而不使用任何锁定机制吗?

Nat*_*ica 7

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


Gon*_*n I 5

只要没有并发写入,多个同时读取始终是线程安全的.