Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Блок, относящийся только к системам Майкрософт
Выполняет атомарную операцию, которая сохраняет адрес Exchange
в адресе Destination
, если адреса Comparand
и Destination
равны.
Синтаксис
void * _InterlockedCompareExchangePointer (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_acq (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLEAcquire (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLERelease (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_nf (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_np (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_rel (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
Параметры
Назначение
[in, out] Указатель на указатель на целевое значение. Знак игнорируется
Exchange
[in] Указатель Exchange. Знак игнорируется
Сравнение
[in] Указатель на сравнение с назначением. Знак игнорируется
Возвращаемое значение
Возвращаемое значение является начальным значением места назначения.
Требования
Intrinsic | Архитектура | Верхний колонтитул |
---|---|---|
_InterlockedCompareExchangePointer |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedCompareExchangePointer_acq , , _InterlockedCompareExchangePointer_nf _InterlockedCompareExchangePointer_rel |
ARM, ARM64 | <iiintrin.h> |
_InterlockedCompareExchangePointer_HLEAcquire , _InterlockedCompareExchangePointer_HLERelease |
x86, x64 | <immintrin.h> |
Замечания
_InterlockedCompareExchangePointer
выполняет атомарное сравнение Destination
адреса с адресом Comparand
. Если адрес Destination
равен адресу Comparand
, адрес Exchange
сохраняется в адресе, указанном в Destination
. В противном случае операция не выполняется.
_InterlockedCompareExchangePointer
предоставляет встроенную поддержку компилятора функции InterlockedCompareExchangePointer в Пакете SDK Для Win32 Windows.
Пример использования _InterlockedCompareExchangePointer
см. в _InterlockedDecrement.
На платформах ARM используйте встроенные функции с суффиксами _acq
и _rel
, если нужно получить и освободить семантику, например в начале и конце критической секции. Встроенные компоненты ARM с суффиксом _nf
(без ограждения) не действуют в качестве барьера памяти.
Встроенные функции с суффиксом _np
(«нет упреждающей выборки") запрещают возможную вставку компилятором операции упреждающей выборки.
На платформах Intel ®, поддерживающих инструкции Hardware Lock Elision (HLE), встроенные функции с суффиксами _HLEAcquire
и _HLERelease
включают подсказку процессору, как можно повысить производительность, устраняя шаг записи с блокировкой оборудования. Если эти встроенные компоненты вызываются на платформах, которые не поддерживают HLE, это указание игнорируется.
Эти процедуры доступны только как встроенные объекты.
Завершение блока, относящегося только к системам Майкрософт