静态 constexpr 类成员变量对多线程读取是否安全?
static constexpr class member variable safe for multithreading reads?
一个类的静态constexpr成员变量被多个线程同时读取是否安全?例如:
class A{
public:
//some code here
private:
static constexpr std::size_t x_ = 99;
}
如果我创建多个类A
类型的对象,每个对象由不同的线程使用,每个 C++11 线程是否可以在不使用任何锁定机制的情况下独立读取成员变量x_
?
是的,这是安全的。 当您有多个线程并且其中至少有一个是编写器并且您没有同步时,就会发生数据争用。 如果你的线程都不是编写器(你不能,因为它是const
(,那么你就不能进行数据竞赛。
只要没有并发写入,多个同时读取始终是线程安全的。
相关文章:
- 原子读取是否保证读取最新值
- 静态 constexpr 类成员变量对多线程读取是否安全?
- LMDB 是否支持随机读取?
- 在线程中读取无符号整数时,c++ 位是否以原子方式切换?
- 是否可以使用 Python csv 阅读器读取使用 C++ std::setw 生成的文件?
- C++编译器是否优化了顺序静态变量读取?
- 是否可以在文本文件中找到最长单词的长度,并在同一个文本文件中读取,只需 1 个 while 循环?
- 从popen()读取的输出是否在pclose()之前完成
- 键入特征以检查类型是否可从流和 MSVC 读取
- 如何检查字符串格式在读取C++文本文件时是否有效?
- 如果由不同的线程写入 8 字节,那么现代英特尔 x86 上的 8 字节读取是否保证理智?
- 直接读取 pthread 互斥锁的所有者字段是否安全?
- 如何使客户端在将数据写入 C++ 管道之前检查服务器是否完成了从管道的读取操作
- 是否可以使用 Webassembly 从磁盘读取文件?
- QTcpSocket 或 QSslSocket 是否会自动创建用于读取/写入的线程?
- 从文本文件读取时,如何知道是否已到达新行?
- 这个针对单个写入器 + 读取器的发布/检查更新类是否可以使用 memory_order_relaxed 或获取/发布以提
- 当结构数组在主线程中填充数据时,从结构数组的低索引元素读取是否线程安全
- 从std::cin非阻塞读取是否与std::this_thread::sleep_for()或std::this_thr
- 易失性但不受限制的读取是否会无限期地产生过时的值?(在真正的硬件上)