InterlockedExchangeAdd 函数 (winnt.h)
执行两个 32 位值的原子加法。
若要对 64 位值进行操作,请使用 InterlockedExchangeAdd64 函数。
语法
LONG InterlockedExchangeAdd(
[in, out] LONG volatile *Addend,
[in] LONG Value
);
参数
[in, out] Addend
指向变量的指针。 此变量的值将替换为操作的结果。
[in] Value
要添加到由 Addend 参数指向的变量的值。
返回值
该函数返回 Addend 参数的初始值。
言论
该函数对 附录所指向的值执行 Value 的原子加法。 结果存储在 附录指定的地址中。 该函数返回 Addend指向的变量的初始值。
此函数的变量必须在 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