_interlockedbittestandset _interlockedbittestandset64
Specifické pro Microsoft
Generovat instrukce, která kontroluje bit b adresy a a vrátí jeho aktuální hodnotu před na hodnotu 1.
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_HLEAcquire(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandset64_HLERelease(
__int64 *a,
__int64 b
);
Parametry
[in] a
Ukazatel paměti k prověření.[in] b
Pozice bit k testování.
Vrácená hodnota
Hodnota bit na pozici b předtím, než je nastaven.
Požadavky
Vnitřní |
Architektura |
Záhlaví |
---|---|---|
_interlockedbittestandset |
x 86, ARM, x64 |
< intrin.h > |
_interlockedbittestandset_acq, _interlockedbittestandset_nf, _interlockedbittestandset_rel |
ARM |
< intrin.h > |
_interlockedbittestandset_HLEAcquire, _interlockedbittestandset_HLERelease |
x86, x64 |
< immintrin.h > |
_interlockedbittestandset64 |
x64 |
< intrin.h > |
_interlockedbittestandset64_HLEAcquire, _interlockedbittestandset64_HLERelease |
x64 |
< immintrin.h > |
Poznámky
V x 86 a x64 procesory, vnitřní tyto objekty používají lock bts pokyn ke čtení a nastaví zadaný bit na hodnotu 1.Operace je atomické.
V ARM procesorů, použijte vnitřní objekty s _acq a _rel přípony pro získání a verze sémantiku, například na začátku a na konci kritické sekce.Vnitřní ARM s _nf příponu ("žádné ohraničení") není fungovat jako překážku paměti.
Na procesory Intel, které podporují hardwaru uzamčení Elision (HLE) pokyny, vnitřní objekty s _HLEAcquire a _HLERelease přípony zahrnout nápovědu pro procesor, který mohou urychlit výkonu tím, že eliminuje krok zápisu uzamčení hardwaru.Pokud tyto vnitřní objekty jsou volány na procesory, které nepodporují HLE, je pokyn ignorován.
Tyto rutiny jsou pouze k dispozici jako vnitřní objekty.