_InterlockedIncrement 内部函数

对 Win32 Windows SDK InterlockedIncrement 函数提供编译器内部函数支持。 _InterlockedIncrement 内部函数是 Microsoft 特定函数

语法

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

参数

lpAddend
[in, out] 指向要递增的变量的指针。

返回值

返回值是生成的递增值。

要求

Intrinsic 体系结构 头文件
%> x86、ARM、x64、ARM64 <intrin.h>
_InterlockedIncrement64 ARM、x64、ARM64 <intrin.h>
ARM、ARM64 <intrin.h>

备注

_InterlockedIncrement 存在几种变体,这些变体根据其涉及的数据类型和是否使用特定于处理器获取或发布语义而有所不同。

_InterlockedIncrement 函数对 32 位整数值操作时,_InterlockedIncrement16 对 16 位整数值操作且 _InterlockedIncrement64 可以对 64 位整数值操作。

ARM 平台上,如果需要(例如在临界区的起点和终点)获取和发布语义,可以使用带 _acq_rel 后缀的函数。 带 _nf(“无围墙”)后缀的内部函数不能充当内存屏障。

lpAddend 参数指向的变量必须与 32 位边界对齐;否则,此函数在多处理器 x86 系统和任何非 x86 系统上将失效。 有关详细信息,请参阅 align

Win32 函数在 Wdm.hNtddk.h 中声明。

这些例程只能用作内部函数。

示例

有关如何使用 _InterlockedIncrement 的示例,请参阅 _InterlockedDecrement

另请参阅

编译器内部函数
关键字
与 x86 编译器冲突