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.
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
InterlockedCompare64Exchange128
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointer
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease