_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 编译器冲突