確保Golang 可執行檔在Windows 上單一實例執行
為了防止可執行檔的多個執行個體同時執行,實作全域互通斥機制是不可或缺的。以下是在Windows 機器上用Golang 實現此目的的解決方案:
利用全域互斥體:
此解決方案涉及使用Windows 中的CreateMutex 函數建立全域互斥體核心。可以跨不同的使用者會話存取全域互斥體,確保一次只能執行一個可執行檔實例。
程式碼範例:
以下Go 程式碼示範如何建立一個全域互斥體:
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可執行檔實例正在運行。此方案有效防止多個執行個體不必要地消耗系統資源。以上是如何確保 Golang 可執行檔的單一執行個體在 Windows 上執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!