Condividi tramite


Funzione InterlockedCompareExchange (wdm.h)

La routine InterlockedCompareExchange esegue un'operazione atomica che confronta il valore di input a cui punta Destination con il valore di Comperand.

Sintassi

LONG CDECL_NON_WVMPURE InterlockedCompareExchange(
  [in, out] LONG volatile *Destination,
  [in]      LONG          ExChange,
  [in]      LONG          Comperand
);

Parametri

[in, out] Destination

Puntatore al valore di input confrontato con il valore di Comperand.

[in] ExChange

Specifica il valore di output a cui punta Destination se il valore di input a cui punta Destination è uguale al valore di Comperand.

[in] Comperand

Specifica il valore confrontato con il valore di input a cui punta Destinazione.

Valore restituito

InterlockedCompareExchange restituisce il valore originale di *Destination.

Osservazioni

Se Comperand è uguale a *Destination, *Destination è impostato su uguale Exchange. In caso contrario, * di destinazione non è modificato.

InterlockedCompareExchange offre un modo rapido e atomico per sincronizzare i test e l'aggiornamento di una variabile condivisa da più thread. Se il valore di input a cui punta Destination è uguale al valore di Comperand, il valore di output di Destination viene impostato sul valore di Exchange.

la InterlockedCompareExchange è progettata per la velocità e, in genere, viene implementata inline da un compilatore. InterlockedCompareExchange è atomico solo rispetto ad altre chiamate InterlockedXxx. Non usa un blocco di rotazione e può essere usato in modo sicuro nei dati di paging.

Le operazioni interlocked non possono essere usate nella memoria non memorizzata nella cache.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 2000.
piattaforma di destinazione Universale
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
libreria OneCoreUAP.lib in Windows 10
IRQL Qualsiasi livello

Vedere anche

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

interlockedExchange

InterlockedExchangePointer

InterlockedIncrement