InterlockedExchangePointer-Funktion (winnt.h)
Atomisch austauscht ein Adresspaar.
Syntax
PVOID InterlockedExchangePointer(
[in, out] PVOID volatile *Target,
[in] PVOID Value
);
Parameter
[in, out] Target
Ein Zeiger auf die Adresse, die ausgetauscht werden soll. Die Funktion legt die Adresse fest, auf die der parameter Target (*Target
) verweist, auf die Adresse, die der Wert des Value-Parameters ist, und gibt den vorherigen Wert des parameters Target zurück.
[in] Value
Die Adresse, die mit der Adresse ausgetauscht werden soll, auf die der parameter Target (*Target
) verweist.
Rückgabewert
Die Funktion gibt die ursprüngliche Adresse zurück, auf die der parameter Target verweist.
Bemerkungen
Diese Funktion kopiert die Adresse, die als zweiter Parameter an die erste übergeben wird, und gibt die ursprüngliche Adresse des ersten zurück.
Bei einem 64-Bit-System sind die Parameter 64 Bit, und der parameter Target muss an 64-Bit-Begrenzungen ausgerichtet werden; andernfalls verhält sich die Funktion unvorhersehbar. Bei einem 32-Bit-System sind die Parameter 32 Bit, und der parameter Target muss an 32-Bit-Begrenzungen ausgerichtet werden.
Die verriegelten Funktionen bieten einen einfachen Mechanismus zum Synchronisieren des Zugriffs auf eine Variable, die von mehreren Threads gemeinsam genutzt wird. Diese Funktion ist atomar in Bezug auf Aufrufe anderer verzahnter Funktionen.
Diese Funktion wird mithilfe eines systeminternen Compilers implementiert. Weitere Informationen finden Sie in der WinBase.h-Headerdatei und _InterlockedExchangePointer.
Diese Funktion generiert eine vollständige Speicherbarriere (oder einen Zaun), um sicherzustellen, dass Speichervorgänge in der Reihenfolge abgeschlossen werden.
Itanium-basierte Systeme: Verwenden Sie für leistungskritische Anwendungen stattdessen InterlockedExchangePointerAcquire.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows XP [Desktop-Apps | UWP-Apps] |
mindestens unterstützte Server- | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform- | Fenster |
Header- | winnt.h (enthalten Windows.h) |
Siehe auch
InterlockedExchangePointerAcquire-