_interlockedbittestandreset systeminternen Funktionen

Microsoft-spezifisch

Generiert eine Anweisung, um bit b der Adresse a auf Null festzulegen und den ursprünglichen Wert zurückzugeben.

Syntax

unsigned char _interlockedbittestandreset(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_acq(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_HLEAcquire(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_HLERelease(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_nf(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset_rel(
   long *a,
   long b
);
unsigned char _interlockedbittestandreset64(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandreset64_acq(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandreset64_nf(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandreset64_rel(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandreset64_HLEAcquire(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandreset64_HLERelease(
   __int64 *a,
   __int64 b
);

Parameter

a
[in] Ein Zeiger auf den zu untersuchenden Speicher.

b
[in] Die zu testde Bitposition.

Rückgabewert

Der ursprüngliche Wert des Bits an der durch b angegebenen Position.

Anforderungen

Intrinsic Aufbau Header
_interlockedbittestandreset x86, ARM, x64, ARM64 <intrin.h>
_interlockedbittestandreset_acq, _interlockedbittestandreset_nf_interlockedbittestandreset_rel ARM, ARM64 <intrin.h>
_interlockedbittestandreset64_acq, _interlockedbittestandreset64_nf_interlockedbittestandreset64_rel ARM64 <intrin.h>
_interlockedbittestandreset_HLEAcquire, _interlockedbittestandreset_HLERelease x86, x64 <immintrin.h>
_interlockedbittestandreset64 x64, ARM64 <intrin.h>
_interlockedbittestandreset64_HLEAcquire, _interlockedbittestandreset64_HLERelease x64 <immintrin.h>

Hinweise

Auf x86- und x64-Prozessoren verwenden diese systeminternen lock btr Anweisungen die Anweisung, die das angegebene Bit in einem atomischen Vorgang auf Null liest und festlegt.

Verwenden Sie auf ARM-Prozessoren 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. Die systeminternen ARM-Dateien mit einem _nf Suffix ("kein Zaun") wirken nicht als Speicherbarriere.

Auf Intel-Prozessoren, die Hardware Lock Elision (HLE)-Anweisungen unterstützen, enthalten die systeminternen Funktionen mit den Suffixen _HLEAcquire und _HLERelease einen Hinweis auf den Prozessor, der die Leistung durch Beseitigen einer Schreibsperre in der Hardware beschleunigen kann. Wenn diese systeminternen Elemente für Prozessoren 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

Systeminterne Compiler
Konflikt mit dem x86-Compiler