Condividi tramite


Funzione InterlockedCompareExchange (miniport.h)

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

Sintassi

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

Parametri

[in, out] Destination

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

ExChange

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

Comperand

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

Valore restituito

InterlockedCompareExchange restituisce il valore originale di *Destination.

Commenti

Se Comparand è uguale a *Destination, *Destination è impostato su Uguale a Exchange. In caso contrario, *Destination è invariato.

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 Comparand, il valore di output di Destination viene impostato sul valore di Exchange.

InterlockedCompareExchange è progettato per la velocità e, in genere, viene implementato inline da un compilatore. InterlockedCompareExchange è atomico solo rispetto ad altre chiamate Xxx interlocked. 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.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 2000.
Piattaforma di destinazione Universale
Intestazione miniport.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
Libreria OneCoreUAP.lib in Windows 10
IRQL Qualsiasi livello

Vedi anche

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

InterlockedExchange

InterlockedExchangePointer

InterlockedIncrement