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: