From e1f086fb8571136d44c80ae6b99a3e24e0e8bb6e Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 7 Jan 2026 15:53:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0map=E8=AF=BB=E5=86=99?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/cluster/Cluster.go | 5 +++++ src/server/game/message_mgr.go | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/server/cluster/Cluster.go b/src/server/cluster/Cluster.go index 4890647e..71835dd4 100644 --- a/src/server/cluster/Cluster.go +++ b/src/server/cluster/Cluster.go @@ -49,6 +49,11 @@ func Init() { registerFunc(msg.CLUSTER_EXIT, ClusterExit) } +// GetCallbackChanMu 返回 CallbackChan 的读写锁,供外部包安全访问 CallbackChan +func GetCallbackChanMu() *sync.RWMutex { + return &callbackChanMu +} + func Destroy() { if server != nil { log.Release("closing cluster server") diff --git a/src/server/game/message_mgr.go b/src/server/game/message_mgr.go index e32512e9..6b04a35e 100644 --- a/src/server/game/message_mgr.go +++ b/src/server/game/message_mgr.go @@ -282,7 +282,11 @@ func PlayerMsgHandler(data *msg.Msg) (interface{}, error) { func PlayerReplyMsgHandler(data *msg.Msg) (interface{}, error) { // 先处理同步回调 if data.UniKey != "" { - if chanel, ok := mergeCluster.CallbackChan[data.UniKey]; ok { + mergeCluster.GetCallbackChanMu().RLock() + chanel, ok := mergeCluster.CallbackChan[data.UniKey] + mergeCluster.GetCallbackChanMu().RUnlock() + + if ok { log.Debug("reply message ") chanel <- data }