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_releasememory_order_acq_rel,并且不能相同。

要求

基本标头:

命名空间: std

请参见

参考

atomic_compare_exchange_weak_explicit功能

原子结构

<atomic>

memory_order