函数
<atomic>

std::atomic_exchange_explicit

template (1)
template <class T>T atomic_store_explicit (volatile atomic<T>* obj, T val, memory_order sync) noexcept;template <class T>T atomic_store_explicit (atomic<T>* obj, T val, memory_order sync) noexcept;
重载 (2)
T atomic_store_explicit (volatile A* obj, T val, memory_order sync) noexcept;T atomic_store_explicit (A* obj, T val, memory_order sync) noexcept;
读写包含的值(显式内存顺序)
obj 中包含的值替换为 val,并返回 obj 在替换之前的值。

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

有关 atomic 的等效成员函数,请参见 atomic::exchange

参数

obj
指向 atomic 对象的指针。
类型 A 代表其他重载的 *原子类型* (如果库不实现 *C 风格原子类型* 作为 atomic 的实例)。
val
要赋给包含对象的值。
T 是原子对象中包含的值的类型(atomic 的模板参数)。
sync
操作的同步模式。
这应为 enum 类型 memory_order.
的值。

返回值

调用前 obj 中包含的值。
T 是所包含值(atomic 的模板参数)的类型。

数据竞争

无数据竞争(原子操作)。内存顺序由参数 sync 指定。

异常安全

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

另见