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 por Destination 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 por Destination.

Retornar valor

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 que é compartilhada por vários threads. Se o valor de entrada apontado por Destination for igual ao valor de Comparand, o valor de saída de Destination 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 chamadasXxx interlocked. Ele não usa um bloqueio de rotação e pode ser usado com segurança em dados pagináveis.

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

Requisitos

Requisito Valor
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