Функция InterlockedExchangeAdd (winnt.h)
Выполняет атомарное добавление двух 32-разрядных значений.
Чтобы работать с 64-разрядными значениями, используйте функцию InterlockedExchangeAdd64.
Синтаксис
LONG InterlockedExchangeAdd(
[in, out] LONG volatile *Addend,
[in] LONG Value
);
Параметры
[in, out] Addend
Указатель на переменную. Значение этой переменной будет заменено результатом операции.
[in] Value
Значение, которое необходимо добавить в переменную, указываемую параметром addend.
Возвращаемое значение
Функция возвращает начальное значение параметра надстройки .
Замечания
Функция выполняет атомарное добавление value к значению, на которое указывает надстройка. Результат хранится в адресе, указанном надстройкой. Функция возвращает начальное значение переменной, на которую указывает надстройка.
Переменные для этой функции должны быть выровнены по 32-разрядной границе; в противном случае эта функция будет вести себя непредсказуемо в системах x86 и любых системах, отличных от x86. См. _aligned_malloc.
Межблокированные функции предоставляют простой механизм синхронизации доступа к переменной, к которой используется несколько потоков. Эта функция атомарна относительно вызовов других взаимоблокируемых функций.
Эта функция реализуется с помощью встроенного компилятора, где это возможно. Дополнительные сведения см. в файле заголовка WinBase.h и _InterlockedExchangeAdd
Эта функция создает полный барьер памяти (или забор), чтобы обеспечить выполнение операций памяти в порядке.
системах на основе Itanium: Для критически важных для производительности приложений используйте вместо этого InterlockedExchangeAddAcquire.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows Server 2003 [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | winnt.h (включая Windows.h) |
библиотеки |
Kernel32.lib |
DLL | Kernel32.dll |
См. также
межблокированного доступа к переменной
">InterlockedExchangeAddAcquire64
InterlockedExchangeAddNoFence64
<href="/previous-versions/windows/desktop/legacy/ms683605(v=vs.85)". InterlockedExchangeAddRelease