客户端,服务器发包走向

多线程模式
其实这个早看过了,在复习一下
主线程创建四个子线程,一个线程一个event_base,专门派发这个
有个监听线程,在监听线程收到连接之后轮询选择一个线程就交给他处理了,其实就这么简单

在看看包走向
客户端发过来的
加入以登录为例(不知客户端是不是走这一套)
1.先打包成protocol形式
2.在livevent里面有个100k的m_sendbuff,然后将这个protocol数据再封装一下就是前面加4个字节的数据的整个长度,然后就是调用bufferent_write
3.服务器响应了读事件,然后将其放到datastream,因为一次buff_read有可能读多个包,或者包的格式不对,然后这个也能起到一个缓存的作用,然后从这个流中循环读取,再从内存池中取protocol长度的内存,然后将其复制到分配到这块内存中
4.然后将这个内存池保存的放到一个boost::lockfree::queue<packet, boost::lockfree::capacity<22000> > m_all_packet;无所队列中,这个m_all_packet相当于缓冲的作用
5.在NetProcSvr子线程有个100m的缓冲,我怀疑刚开始经理是不是写错了,从无锁队列中取出一个包,然后将其内容拷贝到m_recvbuff里面,然后将内存池归还
6.接下来就走了共享队列这块,都知道,
7.gs这边也是事先分配好内存然后从共享内存中取,然后将共享内存归还

服务器发过去
1.先将其打包成protocol形式的然后从GS这边的内存池分配内存,然后放到m_queCmd,我想这个也是模仿net那边的,那边也是从内存池分配然后放到队列中
2.然后将这个放到共享内存中
3.这边从共享内存中取出之后也是放到一个sendbuff里面,然后前面加入了四个字节的长度
4,客户端这边解包这块也是直接new的,然后放到包队列中

我在想为什么接收的包搞缓冲,为什么发送的就不搞缓冲,有可能是因为接受是四个线程,而发送时主线程在发在一个线程里面,而这个缓冲重要是针对多线程的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值