InterlockedExchange

指定された 1 個の変数の内容ともう 1 つの値の交換を一括して行います。この関数は、複数のスレッドが同じ変数を同時に使うことを防止します。

2 つのポインタの値を交換する場合、この関数は InterlockedExchangePointer 関数にとって代わられました。

LONG InterlockedExchange(
  LPLONG Target, // 交換に使われる変数
  LONG Value     // 新しい値
);

パラメータ

Target
値を交換するべき変数へのポインタを指定します。変数から制御が返ると、この変数に、Value パラメータで指定した値が格納されます。そして、この変数がしれまで保持していた値が戻り値として返ります。
Value
Target パラメータが指す変数に格納するべき、1 個の新しい値を指定します。

戻り値

Target パラメータが指す変数の、交換前の値が返ります。

解説

InterlockedDecrementInterlockedCompareExchangeInterlockedExchangeInterlockedExchangeAddInterlockedIncrement の各関数は、複数のスレッドが共有する変数に対して、同期的なアクセスを行うための簡単な方法を提供します。そのような変数が共有メモリ内に存在する場合、異なるプロセスのスレッドもこのメカニズムを利用使用できます。

lpAddend パラメータが指す変数は、32 ビット境界に整列しておかなければなりません。整列されていない場合、マルチプロセッサの x86 システム、または x86 以外のシステムでこの関数を実行すると、この関数は失敗します。

対応情報

Windows NT/2000:Windows NT 3.5 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winbase.h 内で宣言、Windows.h をインクルード
インポートライブラリ:Kernel32.lib を使用

参照

InterlockedCompareExchange, InterlockedDecrement, InterlockedExchangeAdd, InterlockedExchangePointer, InterlockedIncrement

表示: