Partilhar via


Função atomic_compare_exchange_weak_explicit

Executa uma operação fraca atômica de comparação e troca.

template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
   volatile atomic<Ty> *Atom,
   Ty *Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
   atomic<Ty> *Atom,
   Ty *Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;

Parâmetros

  • Atom
    Um ponteiro para um objeto atomic que armazena um valor do tipo Ty.

  • Exp
    Um ponteiro para um valor do tipo Ty.

  • Value
    Um valor do tipo Ty.

  • Order1
    Primeiro argumento memory_order.

  • Order2
    Segundo argumento memory_order. O valor de Order2 não pode ser memory_order_release ou memory_order_acq_rel, nem pode ser mais forte que o valor de Order1.

Valor de retorno

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

Comentários

Uma operação atômica de comparação e troca compara o valor armazenado no objeto apontado por Atom com o valor apontado por Exp. Se os valores forem iguais, a operação substitui o valor que é armazenado no objeto que é apontado pelo Atom por 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 forem iguais, a operação substitui o valor que é apontado pelo Exp pelo valor que é armazenado no objeto que é apontado por Atom e aplica as restrições de ordem de memória que são especificadas por Order2.

Uma operação atômica de comparação e troca flexível executará uma troca se os valores comparados forem iguais. No entanto, se os valores não forem iguais, não há garantia de que a operação execute uma troca.

Requisitos

Cabeçalho: atômico

std de Namespace:

Consulte também

Referência

<atomic>

Estrutura atomic