Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Блок, относящийся только к системам Майкрософт
Создает инструкцию, чтобы задать бит 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) компилятором