函数
<atomic>

std::atomic_compare_exchange_strong_explicit

模板 (1)
template <class T>bool atomic_compare_exchange_strong_explicit (volatile atomic<T>* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;template <class T>bool atomic_compare_exchange_strong_explicit (atomic<T>* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;
重载 (2)
bool atomic_compare_exchange_strong_explicit (volatile A* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;bool atomic_compare_exchange_strong_explicit (A* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;
比较并交换包含的值(强,显式)
操作方式与 atomic_compare_exchange_strong 相同,但它还允许指定成功和失败时使用的*内存顺序*。

有关 atomic 的等效成员函数,请参阅 atomic::compare_exchange_strong

参数

obj
指向 atomic 对象的指针。
类型 A 代表其他重载的 *原子类型* (如果库不实现 *C 风格原子类型* 作为 atomic 的实例)。
expected
指向一个对象,其值将与包含的值进行比较,并且在不匹配的情况下可能被覆盖包含的值
T 是原子对象中包含的值的类型(atomic 的模板参数)。
val
当*expected*与*包含的值*匹配时,要复制到包含对象的值。
T 是原子对象中包含的值的类型(atomic 的模板参数)。
success
当*expected*与*包含的值*匹配时,操作的同步模式。
这应该是 memory_order.
枚举类型的某个值。
failure
当*expected*与*包含的值*不匹配时,操作的同步模式。
这应该是 memory_order 枚举类型的一个值,该值既不是 memory_order_release 也不是 memory_order_acq_rel,并且不比*success*更强。

返回值

如果*expected与*包含的值*相等,则为true
否则返回 false

数据竞争

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

异常安全

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

另见