InterlockedCompareExchange-Funktion (miniport.h)
Die InterlockedCompareExchange-Routine führt einen atomischen Vorgang aus, der den Eingabewert vergleicht, auf den Destination mit dem Wert von Comparand verweist.
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 Comparand verglichen wird.
ExChange
Gibt den Ausgabewert an, auf den destination verweist , wenn der Eingabewert, auf den destination verweist, dem Wert von Comparand entspricht.
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 Comparand 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 destination zeigt, dem Wert von Comparand 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 | miniport.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
Bibliothek | OneCoreUAP.lib auf Windows 10 |
IRQL | Beliebige Ebene |
Weitere Informationen
ExInterlockedCompareExchange64