Mutex 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)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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ı:
1 2 3 4 5 6 7 8 9 |
if IsMutexExists('havuclu_kek') then begin ShowMessage('Program zaten çalışıyor'); Halt; end; |