Share via


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

Retornar valor

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

Comentários

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 Target deve ser alinhado em limites de 32 bits.

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

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [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)

Confira também

Acesso à variável intertravada

Interlockedcompareexchange

InterlockedExchange

InterlockedExchange16

InterlockedExchange16Acquire

InterlockedExchange16NoFence

InterlockedExchange64

InterlockedExchange8

InterlockedExchangeAcquire

InterlockedExchangeAcquire64

Interlockedexchangeadd

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointerAcquire

InterlockedExchangePointerNoFence

InterlockedExchangeSubtract

Funções de sincronização