![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
游戏服务器
文章平均质量分 67
听音乐就好
这个作者很懒,什么都没留下…
展开
-
游戏服务器笔记
1.为了游戏主逻辑循环的流畅运行,所有比较耗时的IO操作都会分享到单独的线程中去做,如网络IO,数据库IO和日志IO2.服务器公共组件实现1>服务器公共组件实现 -- 消息队列2>服务器公共组件实现 -- 环形缓冲区按照严格的先进先出顺序进行处理环形缓冲区是一项很好的技术,不用频繁的分配内存,而且在大多数情况下,内存的反复使用也使得我们能用更少的内存块做更多的事原创 2015-03-03 16:39:11 · 556 阅读 · 0 评论 -
linux epoll
补充研究中。。LT(level triggered)是epoll缺省的工作方式,并且同时支持block和no-block socket.在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,内核还是会继续通知你的,所以,这种模式编程出错误可能性要小一点。传统的select/poll都是这种模型的代表. ET (ed原创 2015-03-04 19:28:36 · 366 阅读 · 0 评论 -
asnyc_read,async_read_some, async_receive
asnyc_read:1>是一个全局函数2>读满指定长度的缓冲区或出错才返回函数内部启动一个read_op,该op内部,多次调用stream.async_read_some,直到缓冲区填满,或者操作结束async_read_some:1>ip::tcp::socket的成员个函数 2>读取到数据或出错就返回,不一定读完了整个包。async_receive:原创 2015-03-06 14:04:00 · 3082 阅读 · 0 评论 -
粘包问题
1.关闭Nagle算法,以及把发送端的SEND_BUF设为02.boost提供了多个异步接受的重载实现,其中async_read可以指定只有刚好填满提供的接受缓冲区,才会回调处理接受的函数。(目前引擎采用此方法)参考资料:http://www.uchar.cn/using-the-asio-elegant-stick-for-processing-received-data-p原创 2015-03-06 14:02:30 · 502 阅读 · 0 评论 -
IOCP的一些笔记
本文只是记录下笔记,主要是参考资料的一些点,辅助个人理解,对其他人多半无用OVERLAPPED(重叠结构)CompletionPort(完成端口):暂时只用把它大体理解为一个容纳网络通信操作的队列完成端口中1.重叠结构要用几个2.绑定完成端口的时候传入单句柄参数,即_PER_SOCKET_CONTEXTif( NULL== CreateIoCompletio原创 2015-03-04 15:21:17 · 736 阅读 · 0 评论