执行 基本比较和交换。*this的操作。
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) volatile _NOEXCEPT;
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) _NOEXCEPT;
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) volatile _NOEXCEPT;
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) _NOEXCEPT;
参数
Exp
一个 Ty 类型的值。Value
一个 Ty 类型的值。Order1
第一 memory_order 参数。Order2
接下来 memory_order 参数。
返回值
指示值进行比较的结果 bool。
备注
此 基本比较,并替换 操作进行比较。*this 存储和 Exp的值。如果值相等,操作替换在 *this 存储和 Val 使用 read-modify-write 操作并将内存顺序约束。Order1指定的值。如果值不相等,操作使用在 *this 存储替换 Exp 的值并将由 Order2指定的内存顺序约束。
没有秒 memory_order 使用隐式 Order2 基于 Order1的值的重载。如果 Order1 为 memory_order_acq_rel,则 Order2 为 memory_order_acquire。如果 Order1 为 memory_order_release,则 Order2 为 memory_order_relaxed。其他情况下,Order2 与 Order1相等。
为接受两个 memory_order 参数的重载,Order2 的值大于 Order1的值不能为 memory_order_release 或 memory_order_acq_rel,并且不能相同。
要求
基本标头:
命名空间: std