Função InterlockedCompareExchange (miniport.h)

A rotina InterlockedCompareExchange executa uma operação atômica que compara o valor de entrada apontado por Destination com o valor de Comparand.

Sintaxe

LONG InterlockedCompareExchange(
  [in, out] LONG volatile *Destination,
            LONG          ExChange,
            LONG          Comperand
);

Parâmetros

[in, out] Destination

Um ponteiro para o valor de entrada que é comparado com o valor de Comparand.

ExChange

Especifica o valor de saída apontado pelo Destino se o valor de entrada apontado por Destination for igual ao valor de Comparand.

Comperand

Especifica o valor que é comparado com o valor de entrada apontado pelo Destination.

Valor retornado

InterlockedCompareExchange retorna o valor original de *Destination.

Comentários

Se Comparand for igual a *Destination, *Destination será definido como igual ao Exchange. Caso contrário, *O destino não será alterado.

InterlockedCompareExchange fornece uma maneira rápida e atômica de sincronizar o teste e a atualização de uma variável compartilhada por vários threads. Se o valor de entrada apontado por Destination for igual ao valor de Comparand, o valor de saída do Destino será definido como o valor do Exchange.

InterlockedCompareExchange foi projetado para velocidade e, normalmente, é implementado embutido por um compilador. InterlockedCompareExchange é atômico apenas em relação a outras chamadas Xxx intertravadas. Ele não usa um bloqueio de rotação e pode ser usado com segurança em dados pageable.

As operações intertravadas não podem ser usadas na memória não armazenada em cache.

Requisitos

   
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho miniport.h (incluem Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
Biblioteca OneCoreUAP.lib no Windows 10
IRQL Qualquer nível

Confira também

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

Interlockeddecrement

InterlockedExchange

InterlockedExchangePointer

Interlockedincrement