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