Windows での Golang 実行可能ファイルの単一インスタンス実行の確保
実行可能ファイルの複数のインスタンスが同時に実行されるのを防ぐには、グローバル ミューテックス メカニズムを実装します。は不可欠です。 Windows マシン上の Golang でこれを実現するための解決策は次のとおりです。
グローバル ミューテックスの利用:
この解決策には、Windows から CreateMutex 関数を使用してグローバル ミューテックスを作成することが含まれます。カーネル。グローバル ミューテックスは、異なるユーザー セッション間でアクセスでき、実行可能ファイルのインスタンスは一度に 1 つだけ実行できます。
コード例:
次の Go コードグローバルを作成する方法を示します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 } }
結論:
グローバル ミューテックスを作成すると、Golang 実行可能ファイルのインスタンスが常に 1 つだけ実行されるようにすることができます。このソリューションは、複数のインスタンスがシステム リソースを不必要に消費することを効果的に防ぎます。
以上がWindows 上で Golang 実行可能ファイルの単一インスタンスを確実に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。