delphi.gif (306 バイト) ミューテックス


ミューテックス(MUTEX)は、同期オブジェクトの一種で、あるオブジェクト(例えば共有メモリ)を複数のプロセスが同時にアクセスすることがないよう管理するのに使います。

 

toach.gif (917 バイト) ミューテックスを作成するには

ミューテックスを作成するには、Win32 APIのCreateMutex関数を使います。

delphi1.gif (322 バイト)
FhMutex := CreateMutex(nil, True, THIS_NAME);
if FhMutex = 0 then
begin
  Result := False; // NG
  Exit;
end;

toach.gif (917 バイト) オブジェクトが他のプロセスやスレッドで使われていないことを確認するには

使おうとするオブジェクトが他のプロセスやスレッドによって使われていないことを確認し、もし、使われていなければ自分自身が使えるようにロックします。これは、WaitForSingleObject関数によって行います。

delphi1.gif (322 バイト)
if WaitForSingleObject(FhMutex, 100) = WAIT_OBJECT_0 then
  Result := True // OK
else
  Result := False // NG
end;

toach.gif (917 バイト) 不要になったオブジェクトを解放するには

オブジェクトを解放するには、ReleaseMutexを使います。また、ミューテックス自身を完全に解放するには、CloseHandleを使います。

delphi1.gif (322 バイト)
if FhMutex <> 0 then
begin
  ReleaseMutex(FhMutex);
  CloseHandle(FhMutex);
end;