встроенные функции _interlockedbittestandreset

Блок, относящийся только к системам Майкрософт

Создает инструкцию, чтобы задать бит b адреса a равным нулю и вернуть исходное значение.

Синтаксис

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
);

Параметры

a
[in] Указатель на память для проверки.

b
[in] Битовое положение для тестирования.

Возвращаемое значение

Исходное значение разряда в позиции, указанной параметром b.

Требования

Intrinsic Архитектура Заголовок
_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>

Замечания

В процессорах x86 и x64 эти встроенные компоненты используют lock btr инструкцию, которая считывает и задает указанный бит нулю в атомарной операции.

На процессорах ARM используются встроенные функции с суффиксами _acq и _rel для получения и освобождения семантики, например, в начале и конце критической секции. Встроенные компоненты ARM с суффиксом _nf (без ограждения) не действуют в качестве барьера памяти.

Для процессоров Intel, поддерживающих инструкции Hardware Lock Elision (HLE), встроенные функции с суффиксами_HLEAcquire и _HLERelease включают подсказку процессору, как можно повысить производительность, устраняя шаг записи с блокировкой оборудования. Если эти встроенные компоненты вызываются на процессорах, которые не поддерживают HLE, это указание игнорируется.

Эти процедуры доступны только как встроенные объекты.

Завершение блока, относящегося только к системам Майкрософт

См. также

Встроенные компоненты компилятора
Конфликты с 32-разрядным (x86) компилятором