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 | Hlavička |
---|---|---|
_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