首页 > 代码库 > 项目分析(map复习)
项目分析(map复习)
有段时间没看map里面的东西了,刚才看发现功能上增加了一些,在来复习了一次流程
初始化每个map建立线程,这个线程有两个功能,1.处理GS发过来的包 2.驱动map里面的定时器
GS发过来的包是存在m_gs2msPkts2这个无锁的单消费者,单生产者队列中,只要是GS中不处理的包都要发到MAP中
然后每个线程thrTransData::thread()就从m_gs2msPkts2中取包
调用Map::process_pkt由于map继承了thrTransData,然后根据绑定调用对于的函数
那如果map里面又包发出去怎么发呢?
有的消息直接通过DataLayer直接发送给客户端
还有的消息需要发送GS中的如:玩家下线保存数据库,玩家切换地图,把这样的包放在m_quePkts2这样一个单生产者,单消费无锁队列
然后GS线程就从m_quePkts2中取包做相应的处理,当然这之间传递都需要协议的,所有的包都需要内存池的
看来是GS发送到MS中放到m_gs2msPkts2中,然后由map线程取
MS发送到GS的包放到m_quePkts2,然后由GS线程取
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。