_InterlockedExchangePointer funzioni intrinseche

Sezione specifica Microsoft

Esegue un'operazione di scambio atomico, che copia l'indirizzo passato come secondo argomento nel primo argomento e restituisce l'indirizzo originale del primo.

Sintassi

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
);

Parametri

Destinazione
[in, out] Puntatore al puntatore al valore da scambiare. La funzione imposta il valore su Value e restituisce il valore precedente.

valore
[in] Valore da scambiare con il valore a cui punta Target.

Valore restituito

La funzione restituisce il valore iniziale a cui punta Target.

Requisiti

Intrinsic Architettura Intestazione
_InterlockedExchangePointer x86, ARM, x64, ARM64 <intrin.h>
_InterlockedExchangePointer_acq, _InterlockedExchangePointer_rel, _InterlockedExchangePointer_nf ARM, ARM64 <intrin.h>
_InterlockedExchangePointer_HLEAcquire, _InterlockedExchangePointer_HLERelease x64 <immintrin.h>

Nell'architettura x86 _InterlockedExchangePointer è una macro che chiama _InterlockedExchange.

Osservazioni:

In un sistema a 64 bit, i parametri sono a 64 bit e devono essere allineati ai limiti a 64 bit. In caso contrario, la funzione ha esito negativo. In un sistema a 32 bit i parametri sono a 32 bit e devono essere allineati secondo limiti a 32 bit. Per altre informazioni, vedere Align.

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. Il suffisso intrinseco con un _nf suffisso ("nessun recinto") non funge da barriera di memoria.

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

Vedi anche

Intrinseci del compilatore
Conflitti con il compilatore x86