次の方法で共有


InterlockedExchangeAdd 関数 (winnt.h)

2 つの 32 ビット値のアトミック加算を実行します。

64 ビット値を操作するには、InterlockedExchangeAdd64 関数を使用します。

構文

LONG InterlockedExchangeAdd(
  [in, out] LONG volatile *Addend,
  [in]      LONG          Value
);

パラメーター

[in, out] Addend

変数へのポインター。 この変数の値は、操作の結果に置き換えられます。

[in] Value

Addend パラメーターによって指される変数に追加される値。

戻り値

この関数は、Addend パラメーターの初期値を返します。

備考

この関数は、addendが指す値に Value アトミック加算を実行します。 結果は、addendで指定 アドレスに格納されます。 この関数は、addendが指す変数の初期値 返します。

この関数の変数は、32 ビット境界に配置する必要があります。それ以外の場合、この関数はマルチプロセッサ x86 システムおよび x86 以外のシステムで予期しない動作をします。 _aligned_mallocを参照してください。

インターロックされた関数は、複数のスレッドによって共有される変数へのアクセスを同期するための簡単なメカニズムを提供します。 この関数は、他のインターロックされた関数の呼び出しに関してアトミックです。

この関数は、可能な限りコンパイラ組み込みを使用して実装されます。 詳細については、WinBase.h ヘッダー ファイルと _InterlockedExchangeAdd を参照してください。

この関数は、メモリ操作が順番に完了するように、完全なメモリ バリア (またはフェンス) を生成します。

Itanium ベースのシステム: パフォーマンスが重要なアプリケーションの場合は、代わりに InterlockedExchangeAddAcquire 使用してください。

この機能は、Windows RT ベースのシステムでサポートされています。
 

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winnt.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

インタロックされた変数アクセス を する

InterlockedCompareExchange の

InterlockedExchange の

InterlockedExchangeAdd64 の

InterlockedExchangeAddAcquire の

">InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence の

InterlockedExchangeAddNoFence64

<a href="/previous-versions/windows/desktop/legacy/ms683605(v=vs.85)"。InterlockedExchangeAddRelease

InterlockedExchangeAddRelease64 の

InterlockedExchangeSubtract の

同期関数の