Поделиться через


Встроенные функции _InterlockedExchangePointer

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

Выполняет элементарную операцию обмена, которая копирует адрес, переданный в качестве второго аргумента в первый и возвращает исходный адрес первого.

void * _InterlockedExchangePointer(
   void * volatile * Target,
   void * Value
); 
void * _InterlockedExchangePointer_acq(
   void * volatile * Target,
   void * Value
); 
void * _InterlockedExchangePointer_rel(
   void * volatile * Target,
   void * Value
); 
void * _InterlockedExchangePointer_nf(
   void * volatile * Target,
   void * Value
); 
void * _InterlockedExchangePointer_HLEAcquire(
   void * volatile * Target,
   void * Value
); 
void * _InterlockedExchangePointer_HLERelease(
   void * volatile * Target,
   void * Value
);

Параметры

  • [in, out] Target
    Указатель на указатель на значение для обмена. Эта функция устанавливает значение Value и возвращает предыдущее значение.

  • [in] Value
    Значение для обмена на значение, на которое указывает Target.

Возвращаемое значение

Функция возвращает начальное значение, на которое указывает Target.

Требования

Встроенная функция

Архитектура

Header

_InterlockedExchangePointer

x86, ARM, x64

< intrin.h >

_InterlockedExchangePointer_acq, _InterlockedExchangePointer_rel, _InterlockedExchangePointer_nf

ARM

< intrin.h >

_InterlockedExchangePointer_HLEAcquire, _InterlockedExchangePointer_HLERelease

x64 с поддержкой HLE

< immintrin.h >

В архитектуре x86, _InterlockedExchangePointer есть макрос, вызывающий _InterlockedExchangePointer.

Заметки

Для 64-разрядной системы параметры 64-разрядные и должны быть выровнены по 64-разрядным границам; в противном случае функция завершается с ошибкой. Для 32-разрядной системы параметры 32-разрядные и должны быть выровнены по 32-разрядням границам. Дополнительные сведения см. в Выравнивание данных.

На платформах ARM используйте встроенные функции с суффиксами _acq и _rel, если нужно получить и освободить семантику, например в начале и конце критической секции. Встроенная функция с суффиксом _nf («без границ») не действует как ограничитель памяти.

На платформах Intel ®, поддерживающих инструкции Hardware Lock Elision (HLE), встроенные функции с суффиксами _HLEAcquire и _HLERelease включают подсказку процессору, как можно повысить производительность, устраняя шаг записи с блокировкой оборудования. Если эти встроенные функции вызываются на платформах, не поддерживающих HLE, подсказка игнорируется.

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

См. также

Ссылки

Встроенные объекты компилятора

Конфликты с компилятором x86