Condividi tramite


Funzione InterlockedCompareExchange128 (winnt.h)

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori a 128 bit specificati e scambia con un altro valore a 128 bit in base al risultato del confronto.

Per operare su valori a 16 bit, usare la funzione InterlockedCompareExchange16 .

Per operare su valori a 32 bit, usare la funzione InterlockedCompareExchange .

Per operare su valori a 64 bit, usare la funzione InterlockedCompareExchange64 .

Sintassi

BOOLEAN InterlockedCompareExchange128(
  [in, out] LONG64 volatile *Destination,
  [in]      LONG64          ExchangeHigh,
  [in]      LONG64          ExchangeLow,
  [in, out] LONG64          *ComparandResult
);

Parametri

[in, out] Destination

Puntatore al valore di destinazione. Questo parametro è una matrice di due interi a 64 bit considerati come campo a 128 bit.

[in] ExchangeHigh

Parte elevata del valore di scambio.

[in] ExchangeLow

Parte bassa del valore di scambio.

[in, out] ComparandResult

Valore da confrontare. Questo parametro è una matrice di due interi a 64 bit considerati come campo a 128 bit. Nell'output viene sovrascritto con il valore originale della destinazione.

Valore restituito

La funzione restituisce 1 se ComparandResult è uguale al valore originale del parametro Destination o 0 se ComparandResult non corrisponde al valore originale del parametro Destination .

Commenti

La funzione confronta il valore Di destinazione con il valore ComparandResult :

  • Se il valore Di destinazione è uguale al valore ComparandResult , i valori ExchangeHigh e ExchangeLow vengono archiviati nella matrice specificata da Destination e anche nella matrice specificata da ComparandResult.
  • In caso contrario, la destinazione non viene modificata.
Indipendentemente dal risultato del confronto, il valore di destinazione originale viene archiviato nella matrice specificata da ComparandResult.

I parametri per questa funzione devono essere allineati a un limite di 16 byte; in caso contrario, la funzione si comporta imprevedibile nei sistemi x64. Vedere _aligned_malloc.

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 è disponibile solo nei sistemi basati su x64 e viene implementata usando un intrinseco del compilatore. Per altre informazioni, vedere il file di intestazione WinBase.h e _InterlockedCompareExchange128.

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

Requisiti

Requisito Valore
Client minimo supportato Windows 8 [solo app desktop]
Server minimo supportato Windows Server 2012 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winnt.h (includere Windows.h)

Vedi anche

Accesso variabile interlocked

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Funzioni di sincronizzazione