Função InterlockedCompareExchange128 (winnt.h)
Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de 128 bits especificados e troca com outro valor de 128 bits com base no resultado da comparação.
Para operar em valores de 16 bits, use a função InterlockedCompareExchange16 .
Para operar em valores de 32 bits, use a função InterlockedCompareExchange .
Para operar em valores de 64 bits, use a função InterlockedCompareExchange64 .
Sintaxe
BOOLEAN InterlockedCompareExchange128(
[in, out] LONG64 volatile *Destination,
[in] LONG64 ExchangeHigh,
[in] LONG64 ExchangeLow,
[in, out] LONG64 *ComparandResult
);
Parâmetros
[in, out] Destination
Um ponteiro para o valor de destino. Esse parâmetro é uma matriz de dois inteiros de 64 bits considerados como um campo de 128 bits.
[in] ExchangeHigh
A parte alta do valor de troca.
[in] ExchangeLow
A parte baixa do valor de troca.
[in, out] ComparandResult
O valor a ser comparado. Esse parâmetro é uma matriz de dois inteiros de 64 bits considerados como um campo de 128 bits. Na saída, isso é substituído pelo valor original do destino.
Retornar valor
A função retornará 1 se ComparandResult for igual ao valor original do parâmetro Destination ou 0 se ComparandResult não for igual ao valor original do parâmetro Destination .
Comentários
A função compara o valor destination com o valor ComparandResult :
- Se o valor Destination for igual ao valor ComparandResult , os valores ExchangeHigh e ExchangeLow serão armazenados na matriz especificada por Destination e também na matriz especificada por ComparandResult.
- Caso contrário, o Destino não será modificado.
Os parâmetros para essa função devem ser alinhados em um limite de 16 bytes; caso contrário, a função se comportará de forma imprevisível em sistemas x64. 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 só está disponível em sistemas baseados em x64 e é implementada usando um compilador intrínseco. Para obter mais informações, consulte o arquivo de cabeçalho WinBase.h e _InterlockedCompareExchange128.
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.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2012 [somente aplicativos da área de trabalho] |
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
InterlockedCompareExchangePointer
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease