Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Provide compiler intrinsic support for the Win32 Windows SDK InterlockedIncrement function. The _InterlockedIncrement
intrinsic functions are Microsoft-specific.
Syntax
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
);
Parameters
lpAddend
[in, out] Pointer to the variable to be incremented.
Return value
The return value is the resulting incremented value.
Requirements
Intrinsic | Architecture | Header |
---|---|---|
_InterlockedIncrement , _InterlockedIncrement16 |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedIncrement64 |
ARM, x64, ARM64 | <intrin.h> |
_InterlockedIncrement_acq , _InterlockedIncrement_rel , _InterlockedIncrement_nf , _InterlockedIncrement16_acq , _InterlockedIncrement16_rel , _InterlockedIncrement16_nf , _InterlockedIncrement64_acq , _InterlockedIncrement64_rel , _InterlockedIncrement64_nf |
ARM, ARM64 | <intrin.h> |
Remarks
There are several variations on _InterlockedIncrement
that vary based on the data types they involve and whether processor-specific acquire or release semantics is used.
While the _InterlockedIncrement
function operates on 32-bit integer values, _InterlockedIncrement16
operates on 16-bit integer values and _InterlockedIncrement64
operates on 64-bit integer values.
On ARM platforms, use the intrinsics with _acq
and _rel
suffixes if you need acquire and release semantics, such as at the beginning and end of a critical section. The intrinsic with an _nf
("no fence") suffix doesn't act as a memory barrier.
The variable pointed to by the lpAddend
parameter must be aligned on a 32-bit boundary; otherwise, this function fails on multiprocessor x86 systems and any non-x86 systems. For more information, see align.
The Win32 function is declared in Wdm.h
or Ntddk.h
.
These routines are only available as intrinsics.
Example
For a sample of how to use _InterlockedIncrement
, see _InterlockedDecrement.
See also
Compiler intrinsics
Keywords
Conflicts with the x86 Compiler