Compartir a través de


método de atomic::compare_exchange_weak

Realiza un atómico débil comparan e intercambian la operación en *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;

Parámetros

  • Exp
    Valor de tipo Ty.

  • Value
    Valor de tipo Ty.

  • Order1
    Primer argumento de memory_order .

  • Order2
    Segundo argumento de memory_order .

Valor devuelto

bool que indica el resultado de la comparación de valores.

Comentarios

Esta operación atómico de comparación e intercambio compara el valor almacenado en *this con Exp.Si los valores son iguales, la operación reemplaza el valor almacenado en *this con Val mediante una operación de read-modify-write y aplicando memoria ordena las restricciones especificadas por Order1.Si los valores no son iguales, la operación utiliza el valor almacenado en *this para reemplazar Exp y aplica las restricciones de orden de memoria especificadas por Order2.

Un atómico débil compara y la operación de intercambio realiza un intercambio si los valores comparados son iguales.Si los valores no son iguales, la operación no se garantiza que realizar un intercambio.

Sobrecargas que no tienen un uso de memory_order de segundo Order2 implícitamente basado en el valor de Order1.Si Order1 es memory_order_acq_rel, Order2 es memory_order_acquire.Si Order1 es memory_order_release, Order2 es memory_order_relaxed.En todos los demás casos, Order2 es igual a Order1.

Para las sobrecargas que toman dos parámetros de memory_order , el valor de Order2 no debe ser memory_order_release o memory_order_acq_rel, y no debe ser más segura que el valor de Order1.

Requisitos

encabezado: atómico

espacio de nombres: std

Vea también

Referencia

función atomic_compare_exchange_weak_explicit

estructura atómica

<atomic>

memory_order