Compartilhar via


Função InterlockedCompareExchange (wdm.h)

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

Sintaxe

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

Parâmetros

[in, out] Destination

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

[in] ExChange

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

[in] 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 Comperand 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 Comperand, 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 wdm.h (include 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