fix: 修复 server 包未使用 KCP 服务器时会有额外的定时器损耗的问题

This commit is contained in:
kercylan98 2023-12-20 12:21:43 +08:00
parent 7e09229330
commit 4d72e8cbcb
3 changed files with 13 additions and 1 deletions

View File

@ -3,6 +3,7 @@ package server
import (
"github.com/kercylan98/minotaur/utils/log"
"github.com/kercylan98/minotaur/utils/network"
"github.com/xtaci/kcp-go/v5"
"math"
"os"
"os/signal"
@ -35,8 +36,12 @@ func (slf *MultipleServer) Run() {
close(runtimeExceptionChannel)
}()
var wait sync.WaitGroup
var hasKcp bool
for i := 0; i < len(slf.servers); i++ {
wait.Add(1)
if slf.servers[i].network == NetworkKcp {
hasKcp = true
}
go func(address string, server *Server) {
var lock sync.Mutex
var startFinish bool
@ -62,6 +67,9 @@ func (slf *MultipleServer) Run() {
}(slf.addresses[i], slf.servers[i])
}
wait.Wait()
if !hasKcp {
kcp.SystemTimedSched.Close()
}
log.Info("Server", log.String(serverMultipleMark, "===================================================================="))
ip, _ := network.IP()

View File

@ -352,6 +352,10 @@ func (slf *Server) Run(addr string) error {
return ErrCanNotSupportNetwork
}
if slf.multiple == nil && slf.network != NetworkKcp {
kcp.SystemTimedSched.Close()
}
<-messageInitFinish
close(messageInitFinish)
messageInitFinish = nil

View File

@ -11,7 +11,7 @@ import (
func TestNew(t *testing.T) {
//limiter := rate.NewLimiter(rate.Every(time.Second), 100)
srv := server.New(server.NetworkWebsocket, server.WithMessageBufferSize(1024*1024), server.WithPProf())
srv := server.New(server.NetworkWebsocket, server.WithTicker(200, 10, false), server.WithMessageBufferSize(1024*1024), server.WithPProf())
//srv.RegMessageExecBeforeEvent(func(srv *server.Server, message *server.Message) bool {
// t, c := srv.TimeoutContext(time.Second * 5)
// defer c()