fix: 修复 Multiple 模式下启动服务器 listen 有时无法打印的问题

This commit is contained in:
kercylan98 2023-07-07 19:11:07 +08:00
parent 1e6974ae4b
commit d972dc864d
1 changed files with 15 additions and 0 deletions

View File

@ -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 {