InterlockedExchangeAdd 函数 (winnt.h)

执行两个 32 位值的原子加法。

若要对 64 位值进行操作,请使用 InterlockedExchangeAdd64 函数。

语法

LONG InterlockedExchangeAdd(
  [in, out] LONG volatile *Addend,
  [in]      LONG          Value
);

参数

[in, out] Addend

指向变量的指针。 此变量的值将替换为操作的结果。

[in] Value

要添加到 Addend 参数指向的变量的值。

返回值

函数返回 Addend 参数的初始值。

注解

函数对 Addend 指向的值执行 Value 的原子加法。 结果存储在 Addend 指定的地址中。 函数返回 Addend 指向的变量的初始值。

此函数的变量必须在 32 位边界上对齐;否则,此函数在多处理器 x86 系统和任何非 x86 系统上的行为将不可预知。 请参阅 _aligned_malloc

互锁函数提供了一种简单的机制,用于同步对多个线程共享的变量的访问。 对于对其他互锁函数的调用,此函数是原子函数。

如果可能,此函数是使用编译器内部函数实现的。 有关详细信息,请参阅 WinBase.h 头文件和 _InterlockedExchangeAdd

此函数 (或围栏) 生成完整的内存屏障,以确保按顺序完成内存操作。

基于 Itanium 的系统: 对于性能关键型应用程序,请改用 InterlockedExchangeAddAcquire

注意基于Windows RT的系统支持此函数。
 

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winnt.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

互锁变量访问

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangeAdd64

InterlockedExchangeAddAcquire

InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence

InterlockedExchangeAddNoFence64

InterlockedExchangeAddRelease

InterlockedExchangeAddRelease64

InterlockedExchangeSubtract

同步函数