Compartilhar via


Função InterlockedCompareExchangePointer (winnt.h)

Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de ponteiro especificados e troca com outro valor de ponteiro com base no resultado da comparação.

Para operar em valores que não são de ponteiro, use a função InterlockedCompareExchange .

Sintaxe

PVOID InterlockedCompareExchangePointer(
  [in, out] PVOID volatile *Destination,
  [in]      PVOID          Exchange,
  [in]      PVOID          Comperand
);

Parâmetros

[in, out] Destination

Um ponteiro para um ponteiro para o valor de destino.

[in] Exchange

O valor da troca.

[in] Comperand

O valor a ser comparado com Destino.

Retornar valor

A função retorna o valor inicial do parâmetro Destination .

Comentários

A função compara o valor destination com o valor Comparand . Se o valor destino for igual ao valor Comparand , o valor do Exchange será armazenado no endereço especificado por Destination. Caso contrário, nenhuma operação será executada.

Em um sistema de 64 bits, os parâmetros são de 64 bits e devem ser alinhados em limites de 64 bits; caso contrário, a função se comportará de forma imprevisível. Em um sistema de 32 bits, os parâmetros são de 32 bits em devem estar alinhados em limites de 32 bits.

As funções interligadas fornecem um mecanismo simples para sincronizar o acesso a uma variável que é compartilhada por vários threads. Essa função é atômica em relação a chamadas para outras funções interligadas.

Essa função é implementada usando um compilador intrínseco sempre que possível. Para obter mais informações, consulte o arquivo de cabeçalho WinBase.h e _InterlockedCompareExchangePointer.

Essa função gera uma barreira de memória completa (ou limite) para garantir que as operações de memória sejam concluídas em ordem.

Sistemas baseados em Itanium: Para aplicativos críticos ao desempenho, use InterlockedCompareExchangePointerAcquire ou InterlockedCompareExchangePointerRelease .

Nota Essa função tem suporte em sistemas baseados em Windows RT.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho winnt.h (inclua Windows.h)

Confira também

Acesso a variáveis interligadas

InterlockedCompare64Exchange128

Interlockedcompareexchange

InterlockedCompareExchange128

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Funções de sincronização