_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.h
或 Ntddk.h
中声明。
这些例程只能用作内部函数。
示例
有关如何使用 _InterlockedIncrement
的示例,请参阅 _InterlockedDecrement。