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

static constexpr class member variable safe for multithreading reads?

本文关键字:读取 是否 安全 多线程 constexpr 成员 变量 静态      更新时间:2023-10-16

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

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

如果我创建多个类A类型的对象,每个对象由不同的线程使用,每个 C++11 线程是否可以在不使用任何锁定机制的情况下独立读取成员变量x_

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

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

相关文章: