项目分析(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线程取
项目分析(map复习)的更多相关文章
- STL空间配置器、vector、list、deque、map复习
本文写于2017-03-03,从老账号迁移到本账号,原文地址:https://www.cnblogs.com/huangweiyang/p/6440830.html STL的六大组件:容器.算法.迭代 ...
- PAT 1002 A+B for Polynomials(map模拟)
This time, you are supposed to find A+B where A and B are two polynomials(多项式). Input Each input fil ...
- lodash
lodash常用函数一 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 高阶函数复习:利用reduce和map把字符串转为数字
复习高阶函数的时候,有一道题想了半天解不出来.看了下别人的解法,发现学习编程,思维真的很重要. 习题: 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数1 ...
- STL复习之 map & vector --- disney HDU 2142
题目链接: https://vjudge.net/problem/40913/origin 大致题意: 这是一道纯模拟题,不多说了. 思路: map模拟,vector辅助 其中用了map的函数: er ...
- 复习java基础第四天(集合:List、Map、Collections、Enumeration)
一.List: List 代表一个元素有序.且可重复的集合,集合中的每个元素都有其对应的顺序索引 List 允许使用重复元素,可以通过索引来访问指定位置的集合元素. List 默认按元素的添加顺序设置 ...
- 3.秋招复习简单整理之List、Map、Set三个接口存取元素时,各有什么特点?
List.Set都是单列元素的集合,它们有共同的父接口Collection. List存取有序可重复元素 存元素:调用add方法,存的元素先来后到,有顺序,当然也可以插队,指定存在某个位置,调用add ...
- map详细的复习
map 就是一种基于自建红黑树的 一一对应的hash 的容器 通过模板方式实现 map<type,type> mapname: 前边是key 后边是 vale 转载如下作者:sevenc ...
- java集合框架复习----(4)Map、List、set
文章目录 五.Map集合[重要] 1.hashMap 六.Collections工具类 总结 集合的概念 List集合 set集合: Map集合 Collection 五.Map集合[重要] 特点: ...
随机推荐
- 360提供的SQL防注入
<?php class sqlsafe { private $getfilter = "'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\ ...
- python restful 框架之 eve 外网访问设置
官网地址: http://python-eve.org/ 配合mongodb进行crud使用起来很方便,但是部署的时候遇到一个问题,按照官网和Deom说的,servername使用 '127.0.0. ...
- 【深入比较ThreadLocal模式与synchronized关键字】
[深入比较ThreadLocal模式与synchronized关键字]ThreadLocal模式与synchronized关键字都是用于处理多线程并发访问变量的问题.只是两者处理问题的角度和思路不同. ...
- python 校招信息爬虫程序
发现一个爬虫程序,正在学习中: https://github.com/lizherui/spider_python
- MySQL 出现 Access denied for user 'root'@'localhost' (using password: YES) 错误
登录某台服务器的mysql时候总报错: mysql2/client.rb:58:in `connect': Access denied for user 'root'@'localhost' (usi ...
- JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype
一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); // ...
- Collection、Iterator、Set、HashSet
Collection接口的基本方法 boolean add(Object o) 向集合当中加入一个对象 void clear() 删除集合当中的所有对象 boolean isEmpty() 判断集合是 ...
- malloc calloc realloc,new区别联系以及什么时候用
三个函数的申明分别是:void* realloc(void* ptr, unsigned newsize);void* malloc(unsigned size);void* calloc(size_ ...
- iOS另类的内存管理
iOS的内存管理算是老生常谈的问题了,我们写iOS的时候无时无刻不在涉及到内存管理.从开始的MRR(manual retain-release)到后来ARC(Automatic Reference C ...
- ExtJS 等待两个/多个store加载完再执行操作的方法
ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架. Extjs加载Store是异步加载的,这有很多好处.但是当我们要在两个或多个不同的store加载完再执行一些操作 ...