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.
Microsoft Specific
Provide compiler intrinsic support for the Win32 Windows SDK InterlockedIncrement function.
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
);
Parameters
- [in, out] lpAddend
Pointer to the variable to be incremented.
Return Value
The return value is the resulting incremented value.
Requirements
Intrinsic |
Architecture |
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> |
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 does not 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.