InterlockedExchangePointer-Funktion (winnt.h)
Ein Adresspaar wird atomar ausgetauscht.
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 Target-Parameter (*Target
) verweist, auf die Adresse, die dem Wert des Value-Parameters entspricht, und gibt den vorherigen Wert des Target-Parameters zurück.
[in] Value
Die Adresse, die mit der Adresse ausgetauscht werden soll, auf die der Target-Parameter (*Target
) verweist.
Rückgabewert
Die Funktion gibt die anfängliche Adresse zurück, auf die der Target-Parameter verweist.
Hinweise
Diese Funktion kopiert die Adresse, die als zweiter Parameter übergeben wird, an den ersten und gibt die ursprüngliche Adresse des ersten zurück.
In einem 64-Bit-System sind die Parameter 64 Bits, und der Target-Parameter muss an 64-Bit-Grenzen ausgerichtet werden. Andernfalls verhält sich die Funktion unvorhersehbar. In einem 32-Bit-System sind die Parameter 32 Bits, und der Target-Parameter muss an 32-Bit-Grenzen ausgerichtet werden.
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 _InterlockedExchangePointer.
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 InterlockedExchangePointerAcquire .
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
InterlockedExchangePointerAcquire