Freigeben über


_InterlockedExchangePointer systeminternen Funktionen

Microsoft-spezifisch

Führt einen Atomaustauschvorgang durch, der die als zweites Argument übergebene Adresse in das erste Argument kopiert und die ursprüngliche Adresse der ersten zurückgibt.

Syntax

void * _InterlockedExchangePointer(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_acq(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_rel(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_nf(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_HLEAcquire(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_HLERelease(
   void * volatile * Target,
   void * Value
);

Parameter

Ziel
[in, out] Zeigen Sie auf den Mauszeiger auf den zu tauschenden Wert. Die Funktion legt den Wert auf Wert fest und gibt den vorherigen Wert zurück.

Wert
[in] Wert, der mit dem von Target angegebenen Wert ausgetauscht werden soll.

Rückgabewert

Die Funktion gibt den Anfangswert zurück, auf den von Target verwiesen wird.

Anforderungen

Intrinsic Aufbau Header
_InterlockedExchangePointer x86, ARM, x64, ARM64 <intrin.h>
_InterlockedExchangePointer_acq, _InterlockedExchangePointer_rel_InterlockedExchangePointer_nf ARM, ARM64 <intrin.h>
_InterlockedExchangePointer_HLEAcquire, _InterlockedExchangePointer_HLERelease x64 <immintrin.h>

In der x86-Architektur ist _InterlockedExchangePointer ein Makro, das _InterlockedExchange aufruft.

Hinweise

Bei einem 64-Bit-System sind die Parameter 64 Bit und müssen an 64-Bit-Begrenzungen ausgerichtet werden. Andernfalls schlägt die Funktion fehl. In einem 32-Bit-System sind die Parameter 32 Bits und müssen auf 32-Bit-Grenzen ausgerichtet sein. Weitere Informationen finden Sie unter "Ausrichten".

Verwenden Sie auf ARM-Plattformen die systeminternen Funktionen mit den Suffixen _acq und _rel, wenn Sie Semantiken zum Abrufen bzw. Freigeben benötigen, wie am Anfang und Ende eines kritischen Abschnitts. Das systeminterne _nf Suffix ("kein Zaun") fungiert nicht als Speicherbarriere.

Auf Intel-Plattformen, die Hardware Lock Elision (HLE)-Anweisungen unterstützen, enthalten die systeminternen Funktionen mit den Suffixen _HLEAcquire und _HLERelease einen Hinweis für den Prozessor, wie die Leistung durch den Wegfall der Schreibsperre in der Hardware beschleunigt werden kann. Wenn diese systeminternen Elemente auf Plattformen aufgerufen werden, die HLE nicht unterstützen, wird der Hinweis ignoriert.

Diese Routinen sind nur als systeminterne Funktionen verfügbar.

Ende Microsoft-spezifisch

Siehe auch

Intrinsische Compilerfunktionen
Konflikt mit dem x86-Compiler