map读写优化
This commit is contained in:
parent
53e1cc8eaa
commit
a8f45d221b
@ -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 // 集群中心
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user