Поделиться через


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

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

Создает инструкцию, которая устанавливает разряд 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_HLEAcquire(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandreset64_HLERelease(
   __int64 *a,
   __int64 b
);

Параметры

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

  • [in] b
    Позиция разряда для тестирования.

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

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

Требования

Встроенная функция

Архитектура

Header

_interlockedbittestandreset

x86, ARM, x64

< intrin.h >

_interlockedbittestandreset_acq, _interlockedbittestandreset_nf, _interlockedbittestandreset_rel

ARM

< intrin.h >

_interlockedbittestandreset_HLEAcquire, _interlockedbittestandreset_HLERelease

x86, x64

< immintrin.h >

_interlockedbittestandreset64

x64

< 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, подсказка игнорируется.

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

См. также

Ссылки

Встроенные объекты компилятора

Конфликты с компилятором x86