diff --git a/common/socket/ServerEvent.go b/common/socket/ServerEvent.go index 2ec2e4d3a..2a9da7465 100644 --- a/common/socket/ServerEvent.go +++ b/common/socket/ServerEvent.go @@ -2,6 +2,7 @@ package socket import ( "context" + "fmt" "log" "os" "sync/atomic" @@ -44,7 +45,7 @@ func (s *Server) OnClose(c gnet.Conn, err error) (action gnet.Action) { if err := recover(); err != nil { // 恢复 panic,err 为 panic 错误值 // 1. 打印错误信息 - cool.Logger.Error(context.TODO(), "panic 错误:", err) + fmt.Println(context.TODO(), "panic 错误:", err) } }() @@ -111,7 +112,7 @@ func (s *Server) OnTraffic(c gnet.Conn) (action gnet.Action) { if err := recover(); err != nil { // 恢复 panic,err 为 panic 错误值 // 1. 打印错误信息 - cool.Logger.Error(context.TODO(), "panic 错误:", err) + fmt.Println(context.TODO(), "panic 错误:", err) } }() diff --git a/common/utils/timer/min_heap.go b/common/utils/timer/min_heap.go index d855e9d62..81a48c7d8 100644 --- a/common/utils/timer/min_heap.go +++ b/common/utils/timer/min_heap.go @@ -6,11 +6,10 @@ package timer import ( "container/heap" "context" + "fmt" "sync" "sync/atomic" "time" - - "github.com/panjf2000/ants/v2" ) var _ Timer = (*minHeap)(nil) @@ -113,8 +112,6 @@ func (m *minHeap) getNewSleepTime() time.Duration { return timeout } -var pool, _ = ants.NewPool(-1) - func (m *minHeap) process() { for { m.mu.Lock() @@ -153,11 +150,19 @@ func (m *minHeap) process() { // 正在运行的任务数加1 atomic.AddInt32(&m.runCount, 1) - pool.Submit(func() { + go func() { + defer func() { + if err := recover(); err != nil { // 恢复 panic,err 为 panic 错误值 + // 1. 打印错误信息 + + fmt.Println(context.TODO(), "panic 错误:", err) + + } + }() callback() // 对正在运行的任务数减1 atomic.AddInt32(&m.runCount, -1) - }) + }() // 如果堆中没有元素,就等待 if m.minHeaps.Len() == 0 { diff --git a/logic/service/player/player.go b/logic/service/player/player.go index 76277a208..922267dd0 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -23,16 +23,6 @@ import ( "github.com/panjf2000/gnet/v2" ) -// CountPlayer 统计在线玩家数量 -func CountPlayer() int { - count := 0 - Mainplayer.Range(func(uint32, *Player) bool { - count++ - return true // 继续遍历 - }) - return count -} - // Mainplayer 全局玩家数据存储映射 var Mainplayer = csmap.New[uint32, *Player]() diff --git a/logic/service/space/in_out.go b/logic/service/space/in_out.go index a89f8d9e7..a42a97427 100644 --- a/logic/service/space/in_out.go +++ b/logic/service/space/in_out.go @@ -8,29 +8,23 @@ import ( "sync/atomic" "github.com/jinzhu/copier" - "github.com/panjf2000/ants/v2" "golang.org/x/time/rate" ) -var mappool, _ = ants.NewPool(-1) - // 向其他人广播,不含自己 // 广播是c为空就不特判,发给全体成员广播 func (s *Space) Broadcast(c common.PlayerI, cmd uint32, data any) { - mappool.Submit(func() { - - s.User.Range(func(k uint32, v common.PlayerI) (stop bool) { - if c != nil { - if k != c.GetInfo().UserID { - v.SendPackCmd(cmd, data) - - } - } else { + s.User.Range(func(k uint32, v common.PlayerI) (stop bool) { + if c != nil { + if k != c.GetInfo().UserID { v.SendPackCmd(cmd, data) - } - return false - }) + } + } else { + v.SendPackCmd(cmd, data) + } + + return false }) }