_InterlockedCompareExchangePointer systeminternen Funktionen
Microsoft-spezifisch
Führt einen atomarischen Vorgang durch, bei dem die Exchange
-Adresse in der Destination
-Adresse gespeichert wird, wenn die Comparand
- und die Destination
-Adresse gleich sind.
Syntax
void * _InterlockedCompareExchangePointer (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_acq (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLEAcquire (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLERelease (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_nf (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_np (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_rel (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
Parameter
Ziel
[in, out] Zeigen Sie auf einen Zeiger auf den Zielwert. Das Zeichen wird ignoriert.
Exchange
[in] Exchange-Zeiger. Das Zeichen wird ignoriert.
Comparand
[in] Zeiger, der mit dem Ziel verglichen werden soll. Das Zeichen wird ignoriert.
Rückgabewert
Der Rückgabewert ist der Anfangswert des Ziels.
Anforderungen
Intrinsic | Aufbau | Header |
---|---|---|
_InterlockedCompareExchangePointer |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedCompareExchangePointer_acq , _InterlockedCompareExchangePointer_nf _InterlockedCompareExchangePointer_rel |
ARM, ARM64 | <iiintrin.h> |
_InterlockedCompareExchangePointer_HLEAcquire , _InterlockedCompareExchangePointer_HLERelease |
x86, x64 | <immintrin.h> |
Hinweise
_InterlockedCompareExchangePointer
führt einen atomarischen Vergleich der Destination
-Adresse mit der Comparand
-Adresse durch. Wenn die Destination
-Adresse der Comparand
-Adresse entspricht, wird die Exchange
-Adresse an der durch Destination
definierten Adresse gespeichert. Andernfalls wird kein Vorgang ausgeführt.
_InterlockedCompareExchangePointer
stellt systeminterne Compilerunterstützung für die Win32 Windows SDK InterlockedCompareExchangePointer-Funktion bereit.
Ein Beispiel für die Verwendung _InterlockedCompareExchangePointer
finden Sie unter _InterlockedDecrement.
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. ARM-Systeminterne mit einem _nf
Suffix ("kein Zaun") wirken nicht als Speicherbarriere.
Die systeminternen Funktionen mit dem Suffix _np
(„no prefetch“) verhindern, dass ein möglicher Vorabrufvorgang vom Compiler eingefügt wird.
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