From d972dc864df9024b9e21c109ad1c19ab9b38916a Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Fri, 7 Jul 2023 19:11:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Multiple=20?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=8B=E5=90=AF=E5=8A=A8=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=20listen=20=E6=9C=89=E6=97=B6=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/multiple.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/server/multiple.go b/server/multiple.go index 0f29a47..c76346d 100644 --- a/server/multiple.go +++ b/server/multiple.go @@ -5,6 +5,7 @@ import ( "go.uber.org/zap" "os" "os/signal" + "sync" "syscall" ) @@ -33,8 +34,17 @@ func (slf *MultipleServer) Run() { close(runtimeExceptionChannel) }() var running = make([]*Server, 0, len(slf.servers)) + var wait sync.WaitGroup for i := 0; i < len(slf.servers); i++ { + wait.Add(1) go func(address string, server *Server) { + var startFinish bool + server.RegStartFinishEvent(func(srv *Server) { + if !startFinish { + startFinish = true + wait.Done() + } + }) server.multiple = slf server.multipleRuntimeErrorChan = runtimeExceptionChannel if err := server.Run(address); err != nil { @@ -42,8 +52,13 @@ func (slf *MultipleServer) Run() { } else { running = append(running, server) } + if !startFinish { + startFinish = true + wait.Done() + } }(slf.addresses[i], slf.servers[i]) } + wait.Wait() log.Info("Server", zap.String("Minotaur Multiple Server", "====================================================================")) for _, server := range slf.servers {