diff --git a/g/net/ghttp/ghttp_server_comm_child_windows.go b/g/net/ghttp/ghttp_server_comm_child_windows.go index 54a0455a4..fc1bf9463 100644 --- a/g/net/ghttp/ghttp_server_comm_child_windows.go +++ b/g/net/ghttp/ghttp_server_comm_child_windows.go @@ -7,8 +7,8 @@ package ghttp import ( - "os" "gitee.com/johng/gf/g/os/gproc" + "os" ) // 开启所有Web Server(根据消息启动) @@ -17,11 +17,9 @@ func onCommChildStart(pid int, data []byte) { sendProcessMsg(gproc.PPid(), gMSG_NEW_FORK, nil) // 如果创建自己的父进程非gproc父进程,那么表示该进程为重启创建的进程,创建成功之后需要通知父进程自行销毁 if gproc.PPidOS() != gproc.PPid() { - sendProcessMsg(gproc.PPidOS(), gMSG_SHUTDOWN, nil) - // 在windows下必须等待父进程销毁后才能表明Server资源已被释放,才能开始端口监听,否则会端口资源冲突 - if p, err := os.FindProcess(gproc.PPidOS()); err == nil { - p.Wait() - } + if p, err := os.FindProcess(gproc.PPidOS()); err == nil { + p.Kill() + } } // 开启Web Server服务 serverMapping.RLockFunc(func(m map[string]interface{}) { @@ -30,6 +28,6 @@ func onCommChildStart(pid int, data []byte) { } }) // 开始心跳时必须保证主进程时间有值,但是又不能等待主进程消息后再开始检测,因此这里自己更新一下通信时间 - updateProcessChildUpdateTime() + updateProcessUpdateTime() checkHeartbeat.Set(true) } \ No newline at end of file diff --git a/g/os/gflock/gflock.go b/g/os/gflock/gflock.go index 92630fac0..70835a3b4 100644 --- a/g/os/gflock/gflock.go +++ b/g/os/gflock/gflock.go @@ -16,7 +16,6 @@ import ( // 文件锁 type Locker struct { mu sync.RWMutex // 用于外部接口调用的互斥锁(阻塞机制) - fmu sync.RWMutex // 用于保证方法内部操作的原子性互斥锁 flock *flock.Flock // 底层文件锁对象 } @@ -44,8 +43,6 @@ func (l *Locker) IsLocked() bool { // 尝试Lock文件,如果失败立即返回 func (l *Locker) TryLock() bool { - l.fmu.Lock() - defer l.fmu.Unlock() ok, _ := l.flock.TryLock() if ok { l.mu.Lock() @@ -55,8 +52,6 @@ func (l *Locker) TryLock() bool { // 尝试RLock文件,如果失败立即返回 func (l *Locker) TryRLock() bool { - l.fmu.Lock() - defer l.fmu.Unlock() ok, _ := l.flock.TryRLock() if ok { l.mu.RLock() @@ -65,29 +60,21 @@ func (l *Locker) TryRLock() bool { } func (l *Locker) Lock() { - l.fmu.Lock() - defer l.fmu.Unlock() l.mu.Lock() l.flock.Lock() } func (l *Locker) UnLock() { - l.fmu.Lock() - defer l.fmu.Unlock() l.flock.Unlock() l.mu.Unlock() } func (l *Locker) RLock() { - l.fmu.Lock() - defer l.fmu.Unlock() l.mu.RLock() l.flock.RLock() } func (l *Locker) RUnlock() { - l.fmu.Lock() - defer l.fmu.Unlock() l.flock.Unlock() l.mu.RUnlock() }