From 4a4fdccddf8e17f625974eff2e273dde981baf25 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 7 Jan 2026 15:47:02 +0800 Subject: [PATCH] =?UTF-8?q?map=E8=AF=BB=E5=86=99=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/cluster/Cluster.go | 2 ++ src/server/cluster/cluster_func.go | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/server/cluster/Cluster.go b/src/server/cluster/Cluster.go index e6a12c53..4890647e 100644 --- a/src/server/cluster/Cluster.go +++ b/src/server/cluster/Cluster.go @@ -16,7 +16,9 @@ const ( ) var FuncMap = map[int]func(*Agent, *msg.Msg) error{} // 消息处理函数 +var funcMapMu sync.RWMutex // FuncMap 的读写锁 var CallbackChan = make(map[string]chan *msg.Msg) // 回调消息队列 +var callbackChanMu sync.RWMutex // CallbackChan 的读写锁 var ( server *network.TCPServer // 服务器 Center *network.TCPClient // 集群中心 diff --git a/src/server/cluster/cluster_func.go b/src/server/cluster/cluster_func.go index d02bdce9..d9ccbd31 100644 --- a/src/server/cluster/cluster_func.go +++ b/src/server/cluster/cluster_func.go @@ -172,7 +172,11 @@ func SendMsgAll(m *msg.Msg) { func processMsg(a *Agent, m *msg.Msg) error { var err error - if fun, ok := FuncMap[m.Type]; ok { + funcMapMu.RLock() + fun, ok := FuncMap[m.Type] + funcMapMu.RUnlock() + + if ok { err = fun(a, m) } else { MsgChan <- m //交由game Module消息处理 @@ -181,15 +185,21 @@ func processMsg(a *Agent, m *msg.Msg) error { } func registerFunc(key int, fun func(*Agent, *msg.Msg) error) { + funcMapMu.Lock() FuncMap[key] = fun + funcMapMu.Unlock() } func registerChanel(key string, chanel chan *msg.Msg) { + callbackChanMu.Lock() CallbackChan[key] = chanel + callbackChanMu.Unlock() } func unregisterChanel(key string) { + callbackChanMu.Lock() delete(CallbackChan, key) + callbackChanMu.Unlock() } func sendGameMsg(m *msg.Msg) {