Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memastikan Hanya Satu Contoh Aplikasi Go Menjalankan Seluruh Sistem Menggunakan Mutex Global?
Menghadkan kepada Satu Contoh Golang Boleh Laksanakan dengan Global Mutex
Ia adalah keperluan biasa untuk menguatkuasakan satu contoh aplikasi. Golang menyediakan penyelesaian yang mudah menggunakan pakej sync.Mutex. Walau bagaimanapun, kaedah ini hanya berfungsi dalam satu proses. Untuk mengehadkan aplikasi kepada satu contoh di seluruh sistem, memanfaatkan mutex global adalah perlu.
Pada Windows, pustaka kernel32.dll menawarkan fungsi CreateMutexW untuk mencipta mutex seluruh sistem. Fungsi ini memerlukan nama unik untuk mutex mengenal pastinya merentas proses.
Contoh:
var ( kernel32 = syscall.NewLazyDLL("kernel32.dll") procCreateMutex = kernel32.NewProc("CreateMutexW") ) func CreateMutex(name string) (uintptr, error) { ret, _, err := procCreateMutex.Call( 0, 0, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(name))), ) switch int(err.(syscall.Errno)) { case 0: return ret, nil default: return ret, err } } // mutexName starting with "Global\" will work across all user sessions _, err := CreateMutex("SomeMutexName")
Dengan menyatakan nama yang bermula dengan "Global" dalam CreateMutex, mutex boleh diakses merentasi berbilang sesi pengguna. Ini memastikan bahawa hanya satu contoh aplikasi yang dijalankan pada sistem.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Hanya Satu Contoh Aplikasi Go Menjalankan Seluruh Sistem Menggunakan Mutex Global?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!