_interlockedbittestandset systeminternen Funktionen

Microsoft-spezifisch

Generieren Sie eine Anweisung, um ein Bit b der Adresse a zu untersuchen und den aktuellen Wert zurückzugeben, bevor Sie sie auf 1 festlegen.

Syntax

unsigned char _interlockedbittestandset(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_acq(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_HLEAcquire(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_HLERelease(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_nf(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_rel(
   long *a,
   long b
);
unsigned char _interlockedbittestandset64(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandset64_acq(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandset64_nf(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandset64_rel(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandset64_HLEAcquire(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandset64_HLERelease(
   __int64 *a,
   __int64 b
);

Parameter

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

b
[in] Die zu testde Bitposition.

Rückgabewert

Der Wert des Bits an der Position b , bevor es festgelegt wird.

Anforderungen

Intrinsic Aufbau Header
_interlockedbittestandset x86, ARM, x64, ARM64 <intrin.h>
_interlockedbittestandset_acq, _interlockedbittestandset_nf_interlockedbittestandset_rel ARM, ARM64 <intrin.h>
_interlockedbittestandset64_acq, _interlockedbittestandset64_nf_interlockedbittestandset64_rel ARM64 <intrin.h>
_interlockedbittestandset_HLEAcquire, _interlockedbittestandset_HLERelease x86, x64 <immintrin.h>
_interlockedbittestandset64 x64, ARM64 <intrin.h>
_interlockedbittestandset64_HLEAcquire, _interlockedbittestandset64_HLERelease x64 <immintrin.h>

Hinweise

Bei x86- und x64-Prozessoren verwenden diese systeminternen Elemente die lock bts Anweisung, um das angegebene Bit auf 1 zu lesen und festzulegen. Der Vorgang ist atomarisch.

Verwenden Sie auf ARM- und ARM64-Prozessoren die systeminternen Mit _acq - und _rel Suffixe zum Abrufen und Freigeben der Semantik, z. B. 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