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 .

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

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

Accesso variabile interlocked

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange128

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Funzioni di sincronizzazione