具有易失性原子变量的原子操作
atomic operation with volatile atomic variable
为什么 C++ 原子操作对易失性atomic<T>
有一个重载版本?
我们什么时候需要声明atomic<T>
为易失性,atomic<T>
和volatile atomic<T>
有什么区别?
它与
任何其他类型的类型相同:如果要对内存映射的 I/O 寄存器执行原子操作,或者需要可变限定类型的语义(与原子性或原子操作提供的线程间同步和内存排序没有任何关系),则需要对原子进行易失性限定。
该标准对原子的volatile
重载有这样的说法(29.6.5[atomics.types.operations.req]/3
)
[ 注意:许多操作都是易失性的。"易失性作为设备寄存器"语义未更改 在标准中。此限定意味着在将这些操作应用于以下操作时会保留波动性 易失性对象。这并不意味着对非易失性对象的操作变得不稳定。因此,挥发性 在某些情况下,可以合并对非易失性对象的合格操作。—尾注 ]
相关文章:
- 对OpenMP reduction子句中的变量执行原子操作
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?
- 标记为 std::memory_order_seq_cst 的单个原子操作是否会在所有位置触发顺序一致性?
- 对单个变量的原子操作
- 对于 CPU 无法原子操作的类型,std::atomic 有什么意义?
- 为什么互斥对象与原子操作不同,前者是操作系统级,后者是处理器级
- 原子变量的多重赋值是原子操作吗?
- 对标准类型使用原子操作
- 对 c++ 11 原子变量的操作实际上是原子的
- 共享指针,C 版本的原子操作
- 即使在单线程程序中,共享指针是否在引用计数中使用原子操作
- 原子操作传播/可见性(原子负载与原子RMW负载)
- 为什么原子操作需要独家的缓存访问
- 在英特尔上自然对齐的POD类型的保证原子操作
- C++ 如何编写原子操作
- 对原子变量的非原子操作
- 具有易失性原子变量的原子操作
- C++11当递增原子变量,并将其赋值给其他值时,就是原子操作
- 了解原子变量和操作
- 对共享变量执行多个原子操作