ミューテックス
ミューテックス(MUTEX)は、同期オブジェクトの一種で、あるオブジェクト(例えば共有メモリ)を複数のプロセスが同時にアクセスすることがないよう管理するのに使います。
ミューテックスを作成するには
ミューテックスを作成するには、Win32 APIのCreateMutex関数を使います。
例
FhMutex := CreateMutex(nil, True, THIS_NAME);
if FhMutex = 0 then
begin
Result := False; // NG
Exit;
end;
オブジェクトが他のプロセスやスレッドで使われていないことを確認するには
使おうとするオブジェクトが他のプロセスやスレッドによって使われていないことを確認し、もし、使われていなければ自分自身が使えるようにロックします。これは、WaitForSingleObject関数によって行います。
例
if WaitForSingleObject(FhMutex, 100) = WAIT_OBJECT_0 then
Result := True // OK
else
Result := False // NG
end;
不要になったオブジェクトを解放するには
オブジェクトを解放するには、ReleaseMutexを使います。また、ミューテックス自身を完全に解放するには、CloseHandleを使います。
例
if FhMutex <> 0 then
begin
ReleaseMutex(FhMutex);
CloseHandle(FhMutex);
end;