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


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

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

Предоставляют встроенную поддержку компилятора для функции Win32 Windows SDK InterlockedIncrement.

long _InterlockedIncrement(
   long * lpAddend
);
long _InterlockedIncrement_acq(
   long * lpAddend
);
long _InterlockedIncrement_rel(
   long * lpAddend
);
long _InterlockedIncrement_nf(
   long * lpAddend
);
short _InterlockedIncrement16(
   short * lpAddend
);
short _InterlockedIncrement16_acq(
   short * lpAddend
);
short _InterlockedIncrement16_rel(
   short * lpAddend
);
short _InterlockedIncrement16_nf (
   short * lpAddend
);
__int64 _InterlockedIncrement64(
   __int64 * lpAddend
);
__int64 _InterlockedIncrement64_acq(
   __int64 * lpAddend
);
__int64 _InterlockedIncrement64_rel(
   __int64 * lpAddend
); 
__int64 _InterlockedIncrement64_nf(
   __int64 * lpAddend
);

Параметры

  • [in, out] lpAddend
    Указатель на переменную для увеличения.

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

Возвращаемое значение, полученное после увеличения.

Требования

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

Архитектура

Header

_InterlockedIncrement, _InterlockedIncrement16, _InterlockedIncrement64

x86, ARM, x64

<intrin.h>

_InterlockedIncrement_acq, _InterlockedIncrement_rel, _InterlockedIncrement_nf, _InterlockedIncrement16_acq, _InterlockedIncrement16_rel, _InterlockedIncrement16_nf, _InterlockedIncrement64_acq, _InterlockedIncrement64_rel, _InterlockedIncrement64_nf

ARM

<intrin.h>

Заметки

Существуют несколько вариантов _InterlockedIncrement, они различаются в зависимости от типов данных, которые включают, и от того, используется ли семантика получения или освобождения конкретного процессора.

Функция _InterlockedIncrement работает с 32-разрядными целыми значениями, _InterlockedIncrement16 работает с 16-разрядными целыми значениями и _InterlockedIncrement64 работает с 64-разрядными целыми значениями.

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

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

Функция Win32 объявляется в Wdm.h или Ntddk.h.

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

Пример

Пример использования _InterlockedIncrement, см. в _InterlockedDecrement.

См. также

Ссылки

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

Ключевые слова в C++

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