funkcje wewnętrzne _interlockedbittestandreset
Specyficzne dla firmy Microsoft
Generuje instrukcję ustawiania bitu b
adresu a
na zero i zwraca oryginalną wartość.
Składnia
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
);
Parametry
a
[in] Wskaźnik do pamięci do zbadania.
b
[in] Położenie bitu do przetestowania.
Wartość zwracana
Oryginalna wartość bitu w pozycji określonej przez b
.
Wymagania
Nieodłączny | Architektura | Nagłówek |
---|---|---|
_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> |
Uwagi
W procesorach x86 i x64 te funkcje wewnętrzne używają lock btr
instrukcji, która odczytuje i ustawia określony bit na zero w operacji niepodzielnej.
Na procesorach ARM użyj funkcji wewnętrznych z sufiksami _acq
i _rel
do uzyskiwania i semantyki wydania, takich jak na początku i na końcu sekcji krytycznej. Funkcje wewnętrzne arm z sufiksem _nf
("bez ogrodzenia") nie działają jako bariera pamięci.
W procesorach Intel obsługujących instrukcje dotyczące blokady sprzętu Elision (HLE) funkcje wewnętrzne z sufiksami _HLEAcquire
zawierają _HLERelease
wskazówkę dla procesora, który może przyspieszyć wydajność, eliminując krok zapisu blokady w sprzęcie. Jeśli te funkcje wewnętrzne są wywoływane na procesorach, które nie obsługują HLE, wskazówka jest ignorowana.
Te procedury są dostępne tylko jako funkcje wewnętrzne.
END Microsoft Specific