Funzione InterlockedCompareExchangePointer (winnt.h)
Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori di puntatore e scambi specificati con un altro valore puntatore in base al risultato del confronto.
Per operare su valori non puntatori, usare la funzione InterlockedCompareExchange .
Sintassi
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
[in] PVOID Comperand
);
Parametri
[in, out] Destination
Puntatore a un puntatore al valore di destinazione.
[in] Exchange
Valore di scambio.
[in] Comperand
Valore da confrontare con Destination.
Valore restituito
La funzione restituisce il valore iniziale del parametro Destination .
Commenti
La funzione confronta il valore Di destinazione con il valore Comparand . Se il valore Di destinazione è uguale al valore Comparand , il valore di Exchange viene archiviato nell'indirizzo specificato da Destination. In caso contrario, non viene eseguita alcuna operazione.
In un sistema a 64 bit, i parametri sono 64 bit e devono essere allineati 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 devono essere allineati secondo 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 _InterlockedCompareExchangePointer.
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 InterlockedCompareExchangePointerAcquire o InterlockedCompareExchangePointerRelease .
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
InterlockedCompare64Exchange128
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease