Compartilhar via


_Funções intrínsecas do InterlockedExchangePointer

Seção específica da Microsoft

Executa uma operação de troca atômica, que copia o endereço passado como o segundo argumento para o primeiro argumento e retorna o endereço original do primeiro.

Sintaxe

void * _InterlockedExchangePointer(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_acq(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_rel(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_nf(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_HLEAcquire(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_HLERelease(
   void * volatile * Target,
   void * Value
);

Parâmetros

Target (destino)
[in, out] Apontador para o ponteiro para o valor a ser trocado. A função define o valor como Value e retorna seu valor anterior.

Valor
[in] Valor a ser trocado com o valor apontado pela Meta.

Valor retornado

A função retorna o valor inicial apontado pelo Destino.

Requisitos

Intrinsic Arquitetura Cabeçalho
_InterlockedExchangePointer x86, ARM, x64, ARM64 <intrinca.h>
_InterlockedExchangePointer_acq, _InterlockedExchangePointer_rel, _InterlockedExchangePointer_nf ARM, ARM64 <intrinca.h>
_InterlockedExchangePointer_HLEAcquire, _InterlockedExchangePointer_HLERelease x64 <immintrin.h>

Na arquitetura x86, _InterlockedExchangePointer é uma macro que chama _InterlockedExchange.

Comentários

Em um sistema de 64 bits, os parâmetros são de 64 bits e devem estar alinhados em limites de 64 bits. Caso contrário, a função falhará. Em um sistema de 32 bits, os parâmetros são de 32 bits em devem estar alinhados em limites de 32 bits. Para obter mais informações, confira align.

Em plataformas ARM, use intrínsecos com os sufixos _acq e _rel para semântica de aquisição e liberação, como no início e no final de uma seção crítica. O intrínseco com um sufixo _nf ("sem cerca") não atua como uma barreira de memória.

Em plataformas Intel que suportam instruções HLE (Elisão de Bloqueio de Hardware), intrínsecos com os sufixos _HLEAcquire e _HLERelease incluem uma dica para o processador que pode acelerar o desempenho, eliminando uma etapa de gravação de bloqueio no hardware. Se esses intrínsecos forem chamados em plataformas sem suporte para HLE, a dica será ignorada.

Essas rotinas somente estão disponíveis como intrínsecos.

Fim da seção específica da Microsoft

Confira também

Intrínsecos do compilador
conflitos com o compilador x86