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

Wewnętrzne 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

Zobacz też

Funkcje wewnętrzne kompilatora
Konflikty z kompilatorem x86