Sdílet prostřednictvím


vnitřní funkce _interlockedbittestandset

Specifické pro Microsoft

Vygenerujte instrukci, která zkontroluje bit b adresy a a vrátí její aktuální hodnotu před nastavením na hodnotu 1.

Syntaxe

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
);

Parametry

A
[v] Ukazatel na paměť, který chcete prozkoumat.

B
[v] Pozice bitu, která se má testovat.

Vrácená hodnota

Hodnota bitu na pozici b před nastavením.

Požadavky

Vnitřní Architektura Záhlaví
_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>

Poznámky

Na procesorech x86 a x64 tyto vnitřní prvky používají lock bts instrukce ke čtení a nastavení zadaného bitu na 1. Operace je atomická.

Na procesorech ARM a ARM64 použijte vnitřní objekty s příponami _acq a získejte a _rel uvolněte sémantiku, například na začátku a na konci kritické části. Vnitřní objekty ARM s příponou _nf (bez plotu) nefungují jako paměťová bariéra.

Na procesorech Intel, které podporují instrukce hardwarového zámku Elision (HLE), vnitřní objekty s _HLEAcquire příponou a _HLERelease přípony obsahují nápovědu k procesoru, který může zrychlit výkon odstraněním kroku zápisu zámku v hardwaru. Pokud jsou tyto vnitřní objekty volány u procesorů, které nepodporují funkci HLE, tip se ignoruje.

Tyto rutiny jsou k dispozici pouze jako vnitřní objekty.

END Microsoft Specific

Viz také

Vnitřní funkce kompilátoru
Konflikty s kompilátorem x86