встроенные функции _interlockedbittestandset
Блок, относящийся только к системам Майкрософт
Создайте инструкцию для изучения бита b
адреса a
и возврата текущего значения перед заданием 1.
Синтаксис
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
);
Параметры
a
[in] Указатель на память для проверки.
b
[in] Битовое положение для тестирования.
Возвращаемое значение
Значение бита в позиции b
перед его настройкой.
Требования
Intrinsic | Архитектура | Верхний колонтитул |
---|---|---|
_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> |
Замечания
В процессорах x86 и x64 эти встроенные компоненты используют lock bts
инструкцию для чтения и задания указанного бита 1. Эта операция является атомарной.
В процессорах ARM и ARM64 используйте встроенные компоненты с суффиксами _acq
_rel
для получения и выпуска семантики, например в начале и конце критического раздела. Встроенные компоненты ARM с суффиксом _nf
(без ограждения) не действуют в качестве барьера памяти.
Для процессоров Intel, поддерживающих инструкции Hardware Lock Elision (HLE), встроенные функции с суффиксами_HLEAcquire
и _HLERelease
включают подсказку процессору, как можно повысить производительность, устраняя шаг записи с блокировкой оборудования. Если эти встроенные компоненты вызываются на процессорах, которые не поддерживают HLE, это указание игнорируется.
Эти процедуры доступны только как встроенные объекты.
Завершение блока, относящегося только к системам Майкрософт
См. также
Встроенные компоненты компилятора
Конфликты с 32-разрядным (x86) компилятором