Função InterlockedCompareExchange64 (winnt.h)
Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de 64 bits especificados e troca com outro valor de 64 bits com base no resultado da comparação.
Sintaxe
LONG64 InterlockedCompareExchange64(
[in, out] LONG64 volatile *Destination,
[in] LONG64 ExChange,
[in] LONG64 Comperand
);
Parâmetros
[in, out] Destination
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.
As variáveis para essa função devem ser alinhadas em um limite de 64 bits; caso contrário, essa função se comportará de forma imprevisível em sistemas x86 multiprocessadores e em sistemas não x86. Confira _aligned_malloc.
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 _InterlockedCompareExchange64.
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 InterlockedCompareExchangeAcquire64 ou InterlockedCompareExchangeRelease64 .
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [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) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |
Confira também
Acesso a variáveis interligadas
InterlockedCompare64Exchange128
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointer
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease