Condividi tramite


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 () sull'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 ().

Valore restituito

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

Osservazioni

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 a 64 bit e il parametro target deve essere allineato sui 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 sui limiti a 32 bit.

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

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

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

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

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

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [app desktop | App UWP]
server minimo supportato Windows Server 2003 [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione winnt.h (include Windows.h)

Vedere anche

accesso a variabili interlocked

InterlockedCompareExchange

interlockedExchange

InterlockedExchange16

InterlockedExchange16Acquire

InterlockedExchange16NoFence

InterlockedExchange64

InterlockedExchange8

InterlockedExchangeAcquire

InterlockedExchangeAcquire64

InterlockedExchangeAdd

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointerAcquire

InterlockedExchangePointerNoFence

InterlockedExchangeSubtract

funzioni di sincronizzazione