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 .
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
InterlockedExchangePointerAcquire