Freigeben über


InterlockedCompareExchangePointer-Funktion (winnt.h)

Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene Zeigerwerte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen Zeigerwert aus.

Verwenden Sie die InterlockedCompareExchange-Funktion , um Nicht-Zeigerwerte zu verwenden.

Syntax

PVOID InterlockedCompareExchangePointer(
  [in, out] PVOID volatile *Destination,
  [in]      PVOID          Exchange,
  [in]      PVOID          Comperand
);

Parameter

[in, out] Destination

Ein Zeiger auf einen 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.

In einem 64-Bit-System sind die Parameter 64 Bit und müssen an 64-Bit-Grenzen ausgerichtet werden. Andernfalls verhält sich die Funktion unvorhersehbar. In einem 32-Bit-System sind die Parameter 32 Bits und müssen auf 32-Bit-Grenzen ausgerichtet sein.

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 _InterlockedCompareExchangePointer.

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 InterlockedCompareExchangePointerAcquire oder InterlockedCompareExchangePointerRelease .

Hinweis Diese Funktion wird auf Windows RT-basierten Systemen unterstützt.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winnt.h (windows.h einschließen)

Weitere Informationen

Ineinandergreifen des Variablenzugriffs

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange128

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Synchronisierungsfunktionen