次の方法で共有


InterlockedExchange 関数 (winnt.h)

32 ビット変数をアトミック操作として指定した値に設定します。

ポインター変数を操作するには、InterlockedExchangePointer 関数を使用します。

16 ビット変数を操作するには、InterlockedExchange16 関数を使用します。

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

構文

LONG InterlockedExchange(
  [in, out] LONG volatile *Target,
  [in]      LONG          Value
);

パラメーター

[in, out] Target

交換する値へのポインター。 この関数は、この変数を Valueに設定し、その前の値を返します。

[in] Value

Targetが指す値と交換する値。

戻り値

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

備考

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

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

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

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

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

必要条件

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

関連項目

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

InterlockedCompareExchange の

InterlockedExchange の

InterlockedExchange16

InterlockedExchange16Acquire の

InterlockedExchange16NoFence

InterlockedExchange64 の

InterlockedExchange8

InterlockedExchangeAcquire の

InterlockedExchangeAcquire64 の

InterlockedExchangeAdd の

InterlockedExchangeAdd64 の

InterlockedExchangeAddAcquire の

">InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence の

InterlockedExchangeAddNoFence64

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

InterlockedExchangeAddRelease64 の

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointer の

InterlockedExchangePointerAcquire の

InterlockedExchangePointerNoFence の

InterlockedExchangeSubtract の

同期関数の