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 XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winnt.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |
関連項目
InterlockedExchangeAddAcquire64
InterlockedExchangeAddNoFence64
InterlockedExchangeAddRelease64
InterlockedExchangePointerAcquire