fix: 修复 Multiple 模式下启动服务器 listen 有时无法打印的问题
This commit is contained in:
parent
1e6974ae4b
commit
d972dc864d
|
@ -5,6 +5,7 @@ import (
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -33,8 +34,17 @@ func (slf *MultipleServer) Run() {
|
||||||
close(runtimeExceptionChannel)
|
close(runtimeExceptionChannel)
|
||||||
}()
|
}()
|
||||||
var running = make([]*Server, 0, len(slf.servers))
|
var running = make([]*Server, 0, len(slf.servers))
|
||||||
|
var wait sync.WaitGroup
|
||||||
for i := 0; i < len(slf.servers); i++ {
|
for i := 0; i < len(slf.servers); i++ {
|
||||||
|
wait.Add(1)
|
||||||
go func(address string, server *Server) {
|
go func(address string, server *Server) {
|
||||||
|
var startFinish bool
|
||||||
|
server.RegStartFinishEvent(func(srv *Server) {
|
||||||
|
if !startFinish {
|
||||||
|
startFinish = true
|
||||||
|
wait.Done()
|
||||||
|
}
|
||||||
|
})
|
||||||
server.multiple = slf
|
server.multiple = slf
|
||||||
server.multipleRuntimeErrorChan = runtimeExceptionChannel
|
server.multipleRuntimeErrorChan = runtimeExceptionChannel
|
||||||
if err := server.Run(address); err != nil {
|
if err := server.Run(address); err != nil {
|
||||||
|
@ -42,8 +52,13 @@ func (slf *MultipleServer) Run() {
|
||||||
} else {
|
} else {
|
||||||
running = append(running, server)
|
running = append(running, server)
|
||||||
}
|
}
|
||||||
|
if !startFinish {
|
||||||
|
startFinish = true
|
||||||
|
wait.Done()
|
||||||
|
}
|
||||||
}(slf.addresses[i], slf.servers[i])
|
}(slf.addresses[i], slf.servers[i])
|
||||||
}
|
}
|
||||||
|
wait.Wait()
|
||||||
|
|
||||||
log.Info("Server", zap.String("Minotaur Multiple Server", "===================================================================="))
|
log.Info("Server", zap.String("Minotaur Multiple Server", "===================================================================="))
|
||||||
for _, server := range slf.servers {
|
for _, server := range slf.servers {
|
||||||
|
|
Loading…
Reference in New Issue