Condividi tramite


Funzioni intrinseche _InterlockedCompareExchangePointer

Sezione specifica Microsoft

Esegue un'operazione atomica che archivia l'indirizzo Exchange nell'indirizzo Destination se gli indirizzi Comparand e Destination sono uguali.

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 ); long _InterlockedCompareExchangePointer_rel (    void * volatile * Destination,    void * Exchange,    void * Comparand );

Parametri

  • [in, out] Destination
    Puntatore a un puntatore al valore di destinazione. Il segno viene ignorato.

  • [in] Exchange
    Puntatore di Exchange. Il segno viene ignorato.

  • [in] Comparand
    Puntatore da confrontare con la destinazione. Il segno viene ignorato.

Valore restituito

Il valore restituito è il valore iniziale della destinazione.

Requisiti

Funzione intrinseca

Architettura

Header

_InterlockedCompareExchangePointer

x86, ARM, x64

<intrin.h>

_InterlockedCompareExchangePointer_acq, _InterlockedCompareExchangePointer_nf, _InterlockedCompareExchangePointer_rel

ARM

<iiintrin.h>

_InterlockedCompareExchangePointer_HLEAcquire, _InterlockedCompareExchangePointer_HLERelease

x86, x64

<immintrin.h>

Note

_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 per le funzioni intrinseche del compilatore per la funzione Win32 _InterlockedCompareExchangePointer di Windows SDK.

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. Le funzioni intrinseche ARM con suffisso _nf ("nessun limite") 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.

Vedere anche

Riferimenti

Intrinseci del compilatore

Parole chiave C++