Gewährleistung der Einzelinstanzausführung einer ausführbaren Golang-Datei unter Windows
Um zu verhindern, dass mehrere Instanzen einer ausführbaren Datei gleichzeitig ausgeführt werden, wird ein globaler Mutex-Mechanismus implementiert ist unerlässlich. Hier ist eine Lösung, um dies in Golang auf einem Windows-Computer zu erreichen:
Verwendung eines globalen Mutex:
Die Lösung beinhaltet die Erstellung eines globalen Mutex mithilfe der CreateMutex-Funktion von Windows Kernel. Auf einen globalen Mutex kann über verschiedene Benutzersitzungen hinweg zugegriffen werden, wodurch sichergestellt wird, dass jeweils nur eine Instanz der ausführbaren Datei ausgeführt werden kann.
Codebeispiel:
Der folgende Go-Code zeigt, wie man ein Global erstellt Mutex:
import ( "syscall" "unsafe" ) // CreateMutex creates a global mutex. func CreateMutex(name string) (uintptr, error) { kernel32 := syscall.NewLazyDLL("kernel32.dll") procCreateMutex := kernel32.NewProc("CreateMutexW") ret, _, err := procCreateMutex.Call( 0, 0, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(name))), ) if int(err.(syscall.Errno)) == 0 { return ret, nil } return ret, err } // SampleMutexName provides an example of creating a global mutex. func SampleMutexName() { _, err := CreateMutex("Global\MyMutexName") if err != nil { // Handle error } }
Fazit:
Durch die Erstellung eines globalen Mutex können Sie sicherstellen, dass immer nur eine Instanz Ihrer ausführbaren Golang-Datei ausgeführt wird. Diese Lösung verhindert effektiv, dass mehrere Instanzen unnötig Systemressourcen verbrauchen.
Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass eine einzelne Instanz einer ausführbaren Golang-Datei unter Windows ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!