Compartilhar via


Função InterlockedCompareExchange16 (winnt.h)

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

Para operar com valores de 32 bits, use a função InterlockedCompareExchange .

Para operar com valores de 64 bits, use a função InterlockedCompareExchange64 .

Para operar com valores de 128 bits, use a função InterlockedCompareExchange128 .

Sintaxe

SHORT InterlockedCompareExchange16(
  [in, out] SHORT volatile *Destination,
  [in]      SHORT          ExChange,
  [in]      SHORT          Comperand
);

Parâmetros

[in, out] Destination

Um ponteiro para o valor de destino.

[in] ExChange

O valor de troca.

[in] Comperand

O valor a ser comparado com Destination.

Retornar valor

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

Comentários

A função compara o valor De destino com o valor Comparand . Se o valor de 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.

Os parâmetros para essa função devem ser alinhados em um limite de 16 bits; caso contrário, a função se comportará de forma imprevisível em sistemas x86 multiprocessadores e em sistemas não x86. Consulte _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 _InterlockedCompareExchange16.

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

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

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 à variável intertravada

InterlockedCompare64Exchange128

Interlockedcompareexchange

InterlockedCompareExchange128

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Funções de sincronização