Wie kann sichergestellt werden, dass eine einzelne Instanz einer ausführbaren Golang-Datei unter Windows ausgeführt wird?

DDD
Freigeben: 2024-11-27 08:09:10
Original
140 Leute haben es durchsucht

How to Ensure a Single Instance of a Golang Executable Runs on Windows?

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
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage