funkcje wewnętrzne _interlockedbittestandset
Specyficzne dla firmy Microsoft
Wygeneruj instrukcję, aby zbadać bit b
adresu a
i zwrócić jego bieżącą wartość przed ustawieniem wartości 1.
Składnia
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
[in] Wskaźnik do pamięci do zbadania.
b
[in] Położenie bitu do przetestowania.
Wartość zwracana
Wartość bitu na pozycji b
przed jej ustawieniem.
Wymagania
Nieodłączny | Architektura | Nagłówek |
---|---|---|
_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> |
Uwagi
W przypadku procesorów x86 i x64 te funkcje wewnętrzne używają lock bts
instrukcji do odczytywania i ustawiania określonego bitu na wartość 1. Operacja jest niepodzielna.
Na procesorach ARM i ARM64 użyj funkcji wewnętrznych z sufiksami _acq
i _rel
do uzyskiwania i semantyki wydań, 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