Compartir a través de


método de atomic::compare_exchange_strong

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

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.

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_strong_explicit

estructura atómica

<atomic>

memory_order