MutexMutex multithread programlarda çokça kullanılan bir mekanizma ve ayrıca hafıza nesnesinin adıdır. Mutex nesnesi tüm işletim sistemi genelinde geçerlidir ve bu Mutex’i oluşturan program (thread) sonlandığında, otomatik olarak hafızadan silinir.

Mutex’ler genellikle aynı dosyaya birden fazla thread’in (iş parçacığı) aynı anda yazmaya kalkmaması veya programınızın birden fazla kopyasının çalışmamasını kontrol etmek gibi işler için kullanılır. Program herhangi bir adla bir mutex oluşturur ve daha sonra aynı ad ile oluşturulmuş bir başka mutex olup olmadığına bakarak. Eğer aynı mutex’den varsa programın bir kopyası zaten  çalışıyor demektir.

Aşağıda oluşturulan mutex’i kontrol etmek için kullanabileceğiniz Delpi kodu yer alıyor. (Mutex oluşturma için buraya bakın)

function IsMutexExists(MutexName: String): Boolean;
var
vMutex: THandle;
begin
Result := True;
vMutex := OpenMutex(0, True, PAnsiChar(MutexName));
if GetLastError = ERROR_FILE_NOT_FOUND then
Result := False;
CloseHandle(vMutex);
end;

Kullanımı:

if IsMutexExists('havuclu_kek') then
begin
ShowMessage('Program zaten çalışıyor');
Halt;
end;

CEVAP VER