函数
<atomic>

std::atomic_fetch_xor_explicit

template (integral) (1)
template <class T>T atomic_fetch_xor_explicit (volatile atomic<T>* obj,                             T val, memory_order sync) noexcept;template <class T>T atomic_fetch_xor_explicit (atomic<T>* obj,                             T val, memory_order sync) noexcept;
重载 (2)
T atomic_fetch_xor_explicit (volatile A* obj, T val, memory_order sync) noexcept;T atomic_fetch_xor_explicit (A* obj, T val, memory_order sync) noexcept;
将包含的值进行按位异或(显式内存顺序)
读取 obj 中包含的值,并用该值与 val 进行按位异或(按位除去或)操作的结果来替换它。

整个操作是原子的(一个原子读-修改-写操作):在函数读取(并返回)其值到修改其值的时刻之间,该值不会受到其他线程的影响。

该函数使用 sync 参数指定的内存顺序进行同步。

请参阅 atomic::fetch_xor 以获取 atomic 的等效成员函数。

参数

obj
指向包含整数值的 atomic 对象的指针。
类型 A 代表其他重载的 原子类型(以防库不将 C 风格的原子类型 实现为 atomic 的实例化)。
val
要应用的值。
T 是原子对象(atomic 的模板参数)所包含的值的整数类型
sync
操作的同步模式。
这应该是 memory_order enum 类型的值之一。

返回值

调用前的存储值。
T 是原子对象(atomic 的模板参数)所包含的值的整数类型

数据竞争

无数据竞争(原子操作)。该操作使用*顺序一致性*(memory_order_seq_cst)。

异常安全

无异常保证: 绝不抛出异常。

另见