InterlockedCompareExchange64-Funktion (winnt.h)
Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene 64-Bit-Werte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen 64-Bit-Wert aus.
Syntax
LONG64 InterlockedCompareExchange64(
[in, out] LONG64 volatile *Destination,
[in] LONG64 ExChange,
[in] LONG64 Comperand
);
Parameter
[in, out] Destination
Ein Zeiger auf den Zielwert.
[in] ExChange
Der Tauschwert.
[in] Comperand
Der Wert, der mit Destination verglichen werden soll.
Rückgabewert
Die Funktion gibt den Anfangswert des Destination-Parameters zurück.
Hinweise
Die Funktion vergleicht den Wert Destination mit dem Comparand-Wert . Wenn der Wert Destination gleich dem Comparand-Wert ist, wird der Exchange-Wert in der durch Destination angegebenen Adresse gespeichert. Andernfalls wird kein Vorgang ausgeführt.
Die Variablen für diese Funktion müssen an einer 64-Bit-Grenze ausgerichtet werden. Andernfalls verhält sich diese Funktion auf x86-Multiprozessorsystemen und allen Nicht-x86-Systemen unvorhersehbar. Weitere Informationen finden Sie unter _aligned_malloc.
Die ineinandergreifenden Funktionen bieten einen einfachen Mechanismus zum Synchronisieren des Zugriffs auf eine Variable, die von mehreren Threads gemeinsam genutzt wird. Diese Funktion ist in Bezug auf Aufrufe von anderen ineinandergreifenden Funktionen unteilbar.
Diese Funktion wird nach Möglichkeit mithilfe eines intrinsischen Compilers implementiert. Weitere Informationen finden Sie in der WinBase.h-Headerdatei und _InterlockedCompareExchange64.
Diese Funktion generiert eine vollständige Speicherbarriere (oder einen Zaun), um sicherzustellen, dass Speichervorgänge in der richtigen Reihenfolge abgeschlossen werden.
Itanium-basierte Systeme: Verwenden Sie für leistungskritische Anwendungen stattdessen InterlockedCompareExchangeAcquire64 oder InterlockedCompareExchangeRelease64 .
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | winnt.h (windows.h einschließen) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
Siehe auch
Ineinandergreifen des Variablenzugriffs
InterlockedCompare64Exchange128
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointer
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease