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 .
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
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease