31 lines
560 B
Go
31 lines
560 B
Go
//go:build windows
|
|
|
|
package process
|
|
|
|
// Lock 获取进程间互斥锁 (Windows: 内存锁)
|
|
// 注意: Windows 版本仅在同一进程内互斥,进程间不互斥
|
|
// 如需真正的进程间锁,后续可改用 Windows Named Mutex
|
|
func (pm *ProcessManager) Lock() error {
|
|
pm.mu.Lock()
|
|
defer pm.mu.Unlock()
|
|
|
|
if pm.locked {
|
|
return nil
|
|
}
|
|
|
|
pm.locked = true
|
|
return nil
|
|
}
|
|
|
|
// Unlock 释放互斥锁 (Windows)
|
|
func (pm *ProcessManager) Unlock() error {
|
|
pm.mu.Lock()
|
|
defer pm.mu.Unlock()
|
|
|
|
if !pm.locked {
|
|
return nil
|
|
}
|
|
pm.locked = false
|
|
return nil
|
|
}
|