_Funções intrínsecas _InterlockedCompareExchangePointer

Seção específica da Microsoft

Executa uma operação atômica que armazena o endereço do Exchange no endereço Destination se os endereços Comparand e Destination forem iguais.

Sintaxe

void * _InterlockedCompareExchangePointer (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_acq (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_HLEAcquire (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_HLERelease (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_nf (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_np (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_rel (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);

Parâmetros

Destino
[in, out] Ponteiro para um ponteiro para o valor de destino. O sinal é ignorado.

Exchange
[in] Ponteiro de troca. O sinal é ignorado.

Comparand
[in] Ponteiro a ser comparado ao destino. O sinal é ignorado.

Valor retornado

O valor de retorno é o valor inicial do destino.

Requisitos

Intrinsic Arquitetura Cabeçalho
_InterlockedCompareExchangePointer x86, ARM, x64, ARM64 <intrinca.h>
_InterlockedCompareExchangePointer_acq, _InterlockedCompareExchangePointer_nf, _InterlockedCompareExchangePointer_rel ARM, ARM64 <iiintrin.h>
_InterlockedCompareExchangePointer_HLEAcquire, _InterlockedCompareExchangePointer_HLERelease x86, x64 <immintrin.h>

Comentários

_InterlockedCompareExchangePointer realiza uma comparação atômica do endereço Destination com o endereço Comparand. Se o endereço Destination for igual ao endereço Comparand, o endereço Exchange será armazenado no endereço especificado pelo Destination. Caso contrário, nenhuma operação será executada.

_InterlockedCompareExchangePointer Fornece suporte intrínseco de compilador à função InterlockedCompareExchangePointer do SDK do Windows Win32.

Para obter um exemplo de como usar _InterlockedCompareExchangePointer, confira _InterlockedDecrement.

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. Os intrínsecos de ARM com um sufixo _nf ("no fence") não funcionam como uma barreira de memória.

Intrínsecos com um sufixo _np ("no prefetch") impedem que uma possível operação de pré-busca seja inserida pelo compilador.

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
Palavras-chave