Funzione InterlockedCompareExchange64 (winnt.h)
Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori a 64 bit specificati e scambia con un altro valore a 64 bit in base al risultato del confronto.
Sintassi
LONG64 InterlockedCompareExchange64(
[in, out] LONG64 volatile *Destination,
[in] LONG64 ExChange,
[in] LONG64 Comperand
);
Parametri
[in, out] Destination
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 Destination con il valore Comparand . Se il valore Destination è uguale al valore Comparand , il valore di Exchange viene archiviato nell'indirizzo specificato da Destination. In caso contrario, non viene eseguita alcuna operazione.
Le variabili per questa funzione devono essere allineate su un limite a 64 bit; in caso contrario, questa funzione si comporta in modo imprevedibile nei sistemi x86 multiprocessore e in tutti i sistemi non x86. Vedere _aligned_malloc.
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 interlocked.
Questa funzione viene implementata usando un intrinseco del compilatore laddove possibile. Per altre informazioni, vedere il file di intestazione WinBase.h e _InterlockedCompareExchange64.
Questa funzione genera una barriera di memoria completa (o limite) per garantire che le operazioni di memoria vengano completate nell'ordine.
Sistemi basati su Itanium: Per le applicazioni critiche per le prestazioni, usare invece InterlockedCompareExchangeAcquire64 o InterlockedCompareExchangeRelease64 .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | winnt.h (include Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |
Vedere anche
Accesso a variabili interlocked
InterlockedCompare64Exchange128
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointer
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease