Compartilhar via


Método atomic::compare_exchange_weak

Executa um atômico fraco comparam e trocam a operação em *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
    Um valor de tipo Ty.

  • Value
    Um valor de tipo Ty.

  • Order1
    Primeiro argumento de memory_order .

  • Order2
    Segundo argumento de memory_order .

Valor de retorno

bool que indica o resultado de comparação de valores.

Comentários

Esta operação comparação e troca atômica compara o valor que é armazenado em *this com Exp.Se os valores forem iguais, a operação substitui o valor que é armazenado em *this com Val usando uma operação de read-modify-write e aplicando as restrições de ordem de memória que são especificadas por Order1.Se os valores não são iguais, a operação usa o valor que é armazenado em *this para substituir Exp e aplica as restrições de ordem de memória que são especificadas por Order2.

Um atômico fraco compara e a operação de troca executa uma troca se os valores são comparados iguais.Se os valores não são iguais, a operação não é garantida para executar uma troca.

Sobrecargas que não têm um uso de memory_order do segundo Order2 implícito que é baseado no valor de Order1.Se Order1 é memory_order_acq_rel, Order2 é memory_order_acquire.Se Order1 é memory_order_release, Order2 é memory_order_relaxed.Em todos os outros casos, Order2 é igual a Order1.

Para sobrecargas que usam dois parâmetros de memory_order , o valor de Order2 não deve ser memory_order_release ou memory_order_acq_rel, e não deve ser mais segura do que o valor de Order1.

Requisitos

Cabeçalho: atômico

namespace: STD

Consulte também

Referência

Função atomic_compare_exchange_weak_explicit

Estrutura atômica

<atomic>

memory_order