встроенные функции _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, подсказка игнорируется.
Эти процедуры доступны только как встроенные объекты.