_InterlockedCompareExchangePointer funzioni intrinseche
Sezione specifica Microsoft
Esegue un'operazione atomica che archivia l'indirizzo Exchange
nell'indirizzo Destination
se gli indirizzi Comparand
e Destination
sono uguali.
Sintassi
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
);
Parametri
Destinazione
[in, out] Puntatore a un puntatore al valore di destinazione. Il segno viene ignorato.
Exchange
[in] Puntatore di scambio. Il segno viene ignorato.
Comparand
[in] Puntatore da confrontare con la destinazione. Il segno viene ignorato.
Valore restituito
Il valore restituito è il valore iniziale della destinazione.
Requisiti
Intrinsic | Architettura | Intestazione |
---|---|---|
_InterlockedCompareExchangePointer |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedCompareExchangePointer_acq , _InterlockedCompareExchangePointer_nf , _InterlockedCompareExchangePointer_rel |
ARM, ARM64 | <iiintrin.h> |
_InterlockedCompareExchangePointer_HLEAcquire , _InterlockedCompareExchangePointer_HLERelease |
x86, x64 | <immintrin.h> |
Osservazioni:
_InterlockedCompareExchangePointer
esegue un confronto atomico dell'indirizzo Destination
con l'indirizzo Comparand
. Se l'indirizzo Destination
è uguale all'indirizzo Comparand
, l'indirizzo Exchange
viene archiviato nell'indirizzo specificato da Destination
. In caso contrario, non viene eseguita alcuna operazione.
_InterlockedCompareExchangePointer
fornisce il supporto intrinseco del compilatore per la funzione InterlockedCompareExchangePointer di Windows SDK Win32.
Per un esempio di come usare _InterlockedCompareExchangePointer
, vedere _InterlockedDecrement.
Sulle piattaforme ARM usare le funzioni intrinseche con i suffissi _acq
e _rel
per la semantica di acquisizione e di rilascio, ad esempio all'inizio e alla fine di una sezione critica. Gli intrinseci ARM con un _nf
suffisso ("nessun recinto") non fungono da barriera di memoria.
Le funzioni intrinseche con suffisso _np
("nessuna prelettura") impediscono l'inserimento di una possibile operazione di prelettura da parte del compilatore.
Sulle piattaforme Intel che supportano le istruzioni HLE (Hardware Lock Elision), le funzioni intrinseche con suffissi _HLEAcquire
e _HLERelease
includono un hint per il processore che consente di accelerare le prestazioni eliminando un passaggio di blocco scrittura nell'hardware. Se queste funzioni intrinseche vengono chiamate su piattaforme che non supportano HLE, l'hint viene ignorato.
Queste routine sono disponibili solo come funzioni intrinseche.
Fine sezione specifica Microsoft