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

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

Выполняет атомарную операцию, которая сохраняет адрес 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, это указание игнорируется.

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

Завершение блока, относящегося только к системам Майкрософт

См. также

Встроенные компоненты компилятора
Ключевые слова