Condividi tramite


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 .

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

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

InterlockedCompareExchange

InterlockedCompareExchange128

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Funzioni di sincronizzazione