Funzione InterlockedExchangePointer (winnt.h)

Scambia in modo atomico una coppia di indirizzi.

Sintassi

PVOID InterlockedExchangePointer(
  [in, out] PVOID volatile *Target,
  [in]      PVOID          Value
);

Parametri

[in, out] Target

Puntatore all'indirizzo da scambiare. La funzione imposta l'indirizzo a cui punta il parametro Target (*Target) all'indirizzo che corrisponde al valore del parametro Value e restituisce il valore precedente del parametro Target .

[in] Value

Indirizzo da scambiare con l'indirizzo a cui punta il parametro Target (*Target).

Valore restituito

La funzione restituisce l'indirizzo iniziale a cui punta il parametro Target .

Commenti

Questa funzione copia l'indirizzo passato come secondo parametro al primo e restituisce l'indirizzo originale del primo.

In un sistema a 64 bit, i parametri sono 64 bit e il parametro Target deve essere allineato ai limiti a 64 bit; in caso contrario, la funzione si comporta in modo imprevedibile. In un sistema a 32 bit, i parametri sono a 32 bit e il parametro Target deve essere allineato ai limiti a 32 bit.

Le funzioni interlock forniscono un meccanismo semplice per la sincronizzazione dell'accesso a una variabile condivisa da più thread. Questa funzione è atomica rispetto alle chiamate ad altre funzioni interlock.

Questa funzione viene implementata usando un intrinseco del compilatore, se possibile. Per altre informazioni, vedere il file di intestazione WinBase.h e _InterlockedExchangePointer.

Questa funzione genera una barriera di memoria completa (o recinzione) per garantire che le operazioni di memoria vengano completate in ordine.

Sistemi basati su Itanium: Per le applicazioni critiche per le prestazioni, usare invece InterlockedExchangePointerAcquire .

Nota Questa funzione è supportata nei sistemi basati su Windows RT.
 

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione winnt.h (includere Windows.h)

Vedi anche

Accesso variabile interlocked

InterlockedCompareExchange

InterlockedExchange

InterlockedExchange16

InterlockedExchange16Acquire

InterlockedExchange16NoFence

InterlockedExchange64

InterlockedExchange8

InterlockedExchangeAcquire

InterlockedExchangeAcquire64

InterlockedExchangeAdd

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointerAcquire

InterlockedExchangePointerNoFence

InterlockedExchangeSubtract

Funzioni di sincronizzazione