From 5a04b66a1c9f25f27d58b427be63c0eb8345fcd0 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 25 Mar 2026 11:42:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=87=E4=BB=BD=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E7=9A=84=E5=9B=9E=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/external.go | 1 + src/server/game/message_handler.go | 3 ++- src/server/game/player_data.go | 7 +++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/server/game/external.go b/src/server/game/external.go index d43b7dae..de31aa75 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -215,6 +215,7 @@ func HandleClientReq(args []interface{}) { } p.(*Player).Recover(backup) //还原Player的数据 } + backup.Reclaim() // 回收备份对象 p.(*Player).lock.Unlock() //解锁 }() p.(*Player).args = make(map[string]interface{}) diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index 9e340ff4..9b5fa356 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -38,7 +38,8 @@ func (p *Player) HandleMsg(m *msg.Msg) { log.Error("Handle msg uid : %d, msg : %v, fatal : %s", p.M_DwUin, m, r) p.Recover(backup) //还原Player的数据 } - p.lock.Unlock() //解锁 + backup.Reclaim() // 回收备份对象 + p.lock.Unlock() //解锁 }() p.args = make(map[string]interface{}) err := p.handle(m) diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index 065517f7..430a9fd9 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -93,6 +93,11 @@ func (pd *PlayerBackUp) Reset() { pd.PlayMod = nil } +func (pd *PlayerBackUp) Reclaim() { + pd.Reset() + playerDataPool.Put(pd) +} + func (p *Player) Stop() { p.wg.Wait() p.signalDispatcherStop() @@ -223,8 +228,6 @@ func (p *Player) Recover(backUp *PlayerBackUp) { // p.GetPlayerBaseMod().Data = backUp.Data p.PlayMod.Recover(backUp) p.Msg = make([]PlayerMsg, 0) - backUp.Reset() - playerDataPool.Put(backUp) } func (p *Player) InitPlayer(UserName string) error {