_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