Função InterlockedExchangePointer (winnt.h)

Troca atomicamente um par de endereços.

Sintaxe

PVOID InterlockedExchangePointer(
  [in, out] PVOID volatile *Target,
  [in]      PVOID          Value
);

Parâmetros

[in, out] Target

Um ponteiro para o endereço a ser trocado. A função define o endereço apontado pelo parâmetro Target (*Target) para o endereço que é o valor do parâmetro Value e retorna o valor anterior do parâmetro Target.

[in] Value

O endereço a ser trocado com o endereço apontado pelo parâmetro Target (*Target).

Valor de retorno

A função retorna o endereço inicial apontado pelo parâmetro de destino .

Observações

Essa função copia o endereço passado como o segundo parâmetro para o primeiro e retorna o endereço original do primeiro.

Em um sistema de 64 bits, os parâmetros são de 64 bits e o parâmetro Target deve ser alinhado 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 e o parâmetro de destino deve ser alinhado em limites de 32 bits.

As funções intertravadas fornecem um mecanismo simples para sincronizar o acesso a uma variável compartilhada por vários threads. Essa função é atômica em relação a chamadas para outras funções intertravadas.

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 _InterlockedExchangePointer.

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.

sistemas baseados em Itanium: Para aplicativos críticos ao desempenho, use InterlockedExchangePointerAcquire.

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

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [aplicativos da área de trabalho | Aplicativos UWP]
servidor com suporte mínimo Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
cabeçalho winnt.h (inclua Windows.h)

Consulte também

de acesso de variável intertravada

InterlockedCompareExchange

InterlockedExchange

interlockedExchange16

InterlockedExchange16Acquire

InterlockedExchange16NoFence

InterlockedExchange64

InterlockedExchange8

InterlockedExchangeAcquire

InterlockedExchangeAcquire64

InterlockedExchangeAdd

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointerAcquire

InterlockedExchangePointerNoFence

InterlockedExchangeSubtract

Funções de sincronização