_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 | Architecture | ヘッダー |
---|---|---|
_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> |
解説
_InterlockedIncrement
には、格納するデータ型、およびプロセッサ固有の取得または解放のセマンティクスを使用するかどうかに基づき、異なるいくつかの種類があります。
_InterlockedIncrement
関数は 32 ビット整数値で動作しますが、_InterlockedIncrement16
は 16 ビット整数値および _InterlockedIncrement64
は 64 ビット整数値で動作します。
ARM プラットフォームでは、クリティカル セクションの最初と最後などで取得と解放のセマンティクスを必要とする場合は、_acq
および _rel
サフィックスの付いた組み込みを使用します。 組み込みで _nf
("no fence") サフィックスの付いたものは、メモリ バリアとして機能しません。
lpAddend
パラメーターが指す変数は 32 ビットの境界に合わせて調整する必要があります。そのようにしない場合、この関数はマルチプロセッサの x86 システムおよび x 86 システム以外のシステムで失敗します。 詳細については、align に関するページを参照してください。
Win32 関数は Wdm.h
または Ntddk.h
で宣言されています。
これらのルーチンは、組み込みとしてのみ使用できます。
例
_InterlockedIncrement
の使用例については、_InterlockedDecrement に関するページを参照してください。