ミューテックスを用いた排他処理の例(C言語)

キーワード:

OpenMutex, WaitForSingleObject, ReleaseMutex, CloseHandle, Sleep

コード:

/* システム中で同時に2つ以上の処理を行ってはいけない処理を行う関数
 * ただし、MUTEX_NAMEで定義された名前を持つミューテックスオブジェクトが
 * 既に作成されているものとする
 */
void CriticalFunc()
{
	HANDLE hMutex;
	
	/* ミューテックスのオープン */
	hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, MUTEX_NAME);

	/* 所有権獲得まで待機 */
	WaitForSingleObject(hMutex, INFINITE);
	
	/* 処理 */
	printf("処理開始\n");
	Sleep(3000);
	printf("処理終了\n");
	
	/* 後処理 */
	ReleaseMutex(hMutex);
	CloseHandle(hMutex);
}
(original text:1998/05/11 更新)

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