Freigeben über


InterlockedCompareExchange-Funktion (wdm.h)

Die InterlockedCompareExchange-Routine führt einen atomischen Vorgang aus, der den Eingabewert vergleicht, auf den Destination mit dem Wert von Comperand verweist.

Syntax

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

Parameter

[in, out] Destination

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

[in] ExChange

Gibt den Ausgabewert an, auf den destination verweist, wenn der Eingabewert, auf den destination verweist, dem Wert von Comperand entspricht.

[in] Comperand

Gibt den Wert an, der mit dem Eingabewert verglichen wird, auf den das Ziel verweist.

Rückgabewert

InterlockedCompareExchange gibt den ursprünglichen Wert von *Destination zurück.

Hinweise

Wenn Comperand gleich *Destination ist, wird *Destination auf equal Exchange festgelegt. Andernfalls bleibt *Destination unverändert.

InterlockedCompareExchange bietet eine schnelle, atomare Möglichkeit zum Synchronisieren des Testens und Aktualisierens einer Variablen, die von mehreren Threads gemeinsam genutzt wird. Wenn der Eingabewert, auf den von Destination verwiesen wird, dem Wert von Comperand entspricht, wird der Ausgabewert von Destination auf den Wert von Exchange festgelegt.

InterlockedCompareExchange ist auf 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 Spin-Sperre und kann sicher für ausgelagerte Daten verwendet werden.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
Bibliothek OneCoreUAP.lib auf Windows 10
IRQL Beliebige Ebene

Weitere Informationen

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

InterlockedExchange

InterlockedExchangePointer

InterlockedIncrement