比較に基づく32bit値の交換(C言語)

キーワード:

InterlockedCompareExchange

サンプルコード:

void DoCompExchange()
{
	ULONG Dest;
	ULONG Exc;
	ULONG Cmp;
	ULONG Prev;
	ULONG *pDest;
	
	pDest = &Dest;
	Dest = 3;
	Exc = 7;

	/* 交換失敗の例 */
	Cmp = 4;
	printf("Dest = %d と Cmp = %d が等しければ、Dest に %d を格納\n", Dest, Cmp, Exc); 
	Prev = (ULONG)InterlockedCompareExchange((PVOID)&Dest, (PVOID)Exc, (PVOID)Cmp);
	printf("実行結果: Dest = %d (実行前の Dest = %d)\n\n", Dest, Prev);

	/* 交換成功の例 */
	Cmp = 3;
	printf("Dest = %d と Cmp = %d が等しければ、Dest に %d を格納\n", Dest, Cmp, Exc); 
	Prev = (ULONG)InterlockedCompareExchange((PVOID)&Dest, (PVOID)Exc, (PVOID)Cmp);
	printf("実行結果: Dest = %d (実行前の Dest = %d)\n\n", Dest, Prev); 
}

(original text:1998/12/25 更新)

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