InterlockedExchange 値の交換

Cの宣言:

LONG InterlockedExchange(LPLONG Dest, LONG Exc);

VBの宣言:

Declare Function InterlockedExchange Lib "kernel32" (ByRef Dest, ByVal Exc) As Long

説明:

与えられた変数の値をExcで示された値と交換する。

この関数は、NTでのみ使用可能である。

この関数は実行中に排他制御を行うため、マルチプロセッサシステムにおいて複数のスレッドが1つの値を共有する場合にも正しい結果が得られる。

引数の意味は、以下の通り。
Dest (out) 交換を行う変数へのポインタ。
Exc (in) 交換する値。

戻り値は、関数の実行前のDestの値となる。

実行環境がマルチプロセッサシステムならば、Destが指すメモリ領域は32bit境界に整列されていなければならない。

Cのサンプル:

void DoExchange()
{
	ULONG Dest;
	ULONG Prev;

	Dest = 3;

	Prev = InterlockedExchange(&Dest, 5);
	printf("交換前の値: %d, 交換後の値: %d\n", Prev, Dest);
}
(original text:1998/12/25 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。