atomic::compare_exchange_weak 方法
执行“原子比较和交换” 操作 *this.
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) volatile _NOEXCEPT;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) _NOEXCEPT;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) volatile _NOEXCEPT;
bool compare_exchange_weak(
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