map读写优化
This commit is contained in:
parent
82c8e970b3
commit
4a4fdccddf
@ -16,7 +16,9 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var FuncMap = map[int]func(*Agent, *msg.Msg) error{} // 消息处理函数
|
var FuncMap = map[int]func(*Agent, *msg.Msg) error{} // 消息处理函数
|
||||||
|
var funcMapMu sync.RWMutex // FuncMap 的读写锁
|
||||||
var CallbackChan = make(map[string]chan *msg.Msg) // 回调消息队列
|
var CallbackChan = make(map[string]chan *msg.Msg) // 回调消息队列
|
||||||
|
var callbackChanMu sync.RWMutex // CallbackChan 的读写锁
|
||||||
var (
|
var (
|
||||||
server *network.TCPServer // 服务器
|
server *network.TCPServer // 服务器
|
||||||
Center *network.TCPClient // 集群中心
|
Center *network.TCPClient // 集群中心
|
||||||
|
|||||||
@ -172,7 +172,11 @@ func SendMsgAll(m *msg.Msg) {
|
|||||||
func processMsg(a *Agent, m *msg.Msg) error {
|
func processMsg(a *Agent, m *msg.Msg) error {
|
||||||
var err 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)
|
err = fun(a, m)
|
||||||
} else {
|
} else {
|
||||||
MsgChan <- m //交由game Module消息处理
|
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) {
|
func registerFunc(key int, fun func(*Agent, *msg.Msg) error) {
|
||||||
|
funcMapMu.Lock()
|
||||||
FuncMap[key] = fun
|
FuncMap[key] = fun
|
||||||
|
funcMapMu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerChanel(key string, chanel chan *msg.Msg) {
|
func registerChanel(key string, chanel chan *msg.Msg) {
|
||||||
|
callbackChanMu.Lock()
|
||||||
CallbackChan[key] = chanel
|
CallbackChan[key] = chanel
|
||||||
|
callbackChanMu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func unregisterChanel(key string) {
|
func unregisterChanel(key string) {
|
||||||
|
callbackChanMu.Lock()
|
||||||
delete(CallbackChan, key)
|
delete(CallbackChan, key)
|
||||||
|
callbackChanMu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendGameMsg(m *msg.Msg) {
|
func sendGameMsg(m *msg.Msg) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user