map读写优化

This commit is contained in:
hahwu 2026-01-07 15:47:02 +08:00
parent 53e1cc8eaa
commit a8f45d221b
2 changed files with 13 additions and 1 deletions

View File

@ -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 // 集群中心

View File

@ -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) {