Freigeben über


InterlockedCompareExchange-Funktion (miniport.h)

Die InterlockedCompareExchange Routine führt einen atomischen Vorgang aus, der den Von Destination mit dem Wert von Comparandvergleicht.

Syntax

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

Parameter

[in, out] Destination

Ein Zeiger auf den Eingabewert, der mit dem Wert von Comparandverglichen wird.

ExChange

Gibt den Ausgabewert an, auf den Destination verweist, wenn der von Destination auf den Wert von Comparandverweist.

Comperand

Gibt den Wert an, der mit dem Eingabewert verglichen wird, auf den durch Destinationverwiesen wird.

Rückgabewert

InterlockedCompareExchange gibt den ursprünglichen Wert von *Destinationzurück.

Bemerkungen

Wenn Comparand- gleich *Ziel-ist, wird *Ziel- auf Exchange-festgelegt. Andernfalls ist *Ziel- unverändert.

InterlockedCompareExchange bietet eine schnelle, atomare Möglichkeit, das Testen und Aktualisieren einer Variablen zu synchronisieren, die von mehreren Threads gemeinsam genutzt wird. Wenn der von Destination verweisende Eingabewert dem Wert Comparandentspricht, wird der Ausgabewert Ziel- auf den Wert Exchange-festgelegt.

InterlockedCompareExchange ist für Geschwindigkeit ausgelegt und wird in der Regel von einem Compiler inline implementiert. InterlockedCompareExchange ist nur in Bezug auf andere InterlockedXxx Aufrufe atomar. Es verwendet keine Drehsperre und kann auf seitenfähigen Daten sicher verwendet werden.

Interlocked-Vorgänge können nicht für nicht zwischengespeicherten Arbeitsspeicher verwendet werden.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- miniport.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
Library OneCoreUAP.lib unter Windows 10
IRQL- Beliebige Ebene

Siehe auch

ExInterlockedCompareExchange64-

InterlockedCompareExchangePointer

InterlockedDecrement-

InterlockedExchange-

InterlockedExchangePointer-

InterlockedIncrement-