随笔分类 -  chaos

关于个人开源网络库 - chaos
摘要:每个网络库都会有自己的连接管理策略,而我在设计chaos的初期,就制定了几条规则,这里我就针对每一点进行分析,及当初的考虑。 阅读全文
posted @ 2012-12-11 14:32 Zark 阅读(378) 评论(0) 推荐(0) 编辑
摘要:基本原理 - 在chaos开篇介绍(http://www.cppthinker.com/chaos/57/chaos_1)中已经提到,task service作为chaos库的核心,主要承担着三个重则: 1. 网络I/O 2. 超时事件 3. 异步消息处理 简单来讲,可以认为一个task service中包含一个epollfd,一个定时事件管理器,一个等待被处理的异步消息队列 阅读全文
posted @ 2012-12-11 14:31 Zark 阅读(329) 评论(0) 推荐(0) 编辑
摘要:对于buffer的设计,chaos和其他网络库的做法稍有不同,就拿libevent-stable-1.4.13(以下所提到libevent处皆为该版本)来说,它采用一种能够自动扩张的buffer,基本策略如下: 1. 当缓冲区不够存放新数据时,它会先在内部做marshal,看看是否能够腾挪出足够的空间 2. 假如没有满足,那么对buffer进行expand, 大小为原来的两倍,扩张之后该buffer就不会缩小 阅读全文
posted @ 2012-12-11 14:29 Zark 阅读(703) 评论(0) 推荐(1) 编辑
摘要:Chaos是一个基于Linux平台, reactor模式的网络事件库, 目前仅支持TCP传输协议, 仅在x86_64下编译, 并遵循3-clause BSD开源协议. 在使用上, 可以说它很像boost asio, 可能是由于我对boost asio的接口设计很有爱吧, 而且对于boost asio在异步编程方面的思想, 我个人也比较认同, 但至今我也没有仔细阅读过boost asio的源码, 一是boost的模板化编程在可读性上让我比较折磨, 其二则是不想在对设计先入为主的情况下去开发chaos, 很多事情只有我们自己亲自去思考, 才能有所收获. 阅读全文
posted @ 2012-12-11 14:25 Zark 阅读(738) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示