Udostępnij za pośrednictwem


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

Zobacz też

Funkcje wewnętrzne kompilatora
Konflikty z kompilatorem x86