Freigeben über


Systeminterne Funktionen „_InterlockedExchangePointer“

Microsoft-spezifisch

Führen Sie einen unteilbaren Austauschvorgang durch, bei dem die übergebene Adresse als zweites Argument in das erste kopiert und die ursprüngliche Adresse des ersten Arguments zurückgegeben wird.

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

  • [in, out] Target
    Zeiger auf den Zeiger auf den auszutauschenden Wert. Die Funktion setzt den Wert auf Value und gibt den vorherigen Wert zurück.

  • [in] Value
    Wert, der mit dem Wert ausgetauscht werden soll, auf den von Target gezeigt wird.

Rückgabewert

Die Funktion gibt den Anfangswert zurück, auf den Target zeigt.

Anforderungen

Systemintern

Architektur

Header

_InterlockedExchangePointer

x86, ARM, x64

<intrin.h>

_InterlockedExchangePointer_acq, _InterlockedExchangePointer_rel, _InterlockedExchangePointer_nf

ARM

<intrin.h>

_InterlockedExchangePointer_HLEAcquire, _InterlockedExchangePointer_HLERelease

x64 mit HLE-Unterstützung

<immintrin.h>

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

Hinweise

In einem 64-Bit-System sind die Parameter 64 Bits und müssen auf 64-Bit-Grenzen ausgerichtet sein. 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 abrufen und freigeben müssen, beispielsweise am Anfang und Ende eines kritischen Abschnitts. Die systeminternen Funktionen mit dem Suffix _nf („keine Umgrenzung“) fungieren nicht als Arbeitsspeicherbarriere.

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 Funktionen auf Plattformen aufgerufen werden, die HLE nicht unterstützen, wird der Hinweis ignoriert.

Diese Routinen sind nur als systeminterne Funktionen verfügbar.

Siehe auch

Referenz

Intrinsische Compilerfunktionen

Konflikt mit dem x86-Compiler