具有易失性原子变量的原子操作

atomic operation with volatile atomic variable

本文关键字:变量 原子操作 易失性      更新时间:2023-10-16

为什么 C++ 原子操作对易失性atomic<T>有一个重载版本?

我们什么时候需要声明atomic<T>为易失性,atomic<T>volatile atomic<T>有什么区别?

它与

任何其他类型的类型相同:如果要对内存映射的 I/O 寄存器执行原子操作,或者需要可变限定类型的语义(与原子性或原子操作提供的线程间同步和内存排序没有任何关系),则需要对原子进行易失性限定。

该标准对原子的volatile重载有这样的说法(29.6.5[atomics.types.operations.req]/3

[ 注意:许多操作都是易失性的。"易失性作为设备寄存器"语义未更改 在标准中。此限定意味着在将这些操作应用于以下操作时会保留波动性 易失性对象。这并不意味着对非易失性对象的操作变得不稳定。因此,挥发性 在某些情况下,可以合并对非易失性对象的合格操作。—尾注 ]