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.
Independentemente do resultado da comparação, o valor de Destino original é armazenado na matriz especificada por ComparandResult.

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

Interlockedcompareexchange

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Funções de sincronização