Boost asio中有两点用的不爽:
1. asio中的所有对象都引用io_service
2. async_write还要自己保证内存在completed之前有效
有空要把这两点搞的更傻瓜一点,实际上在全异步模式下NET IO分配两个线程足矣,async搞一个队列,completed时候删掉,还可以通过writev优化写, 现在在做的一个redrabbit lib
就是在boost asio上封装的更傻瓜一点。
http://code.google.com/p/redrabbit/source/browse/#svn%2Ftrunk
如果再有空,想自己封装一下epoll, 不考虑移植性,很少的模板,比较简单的类关系,
看了一下asio 源码,其思路不是很复杂,但是为考虑移植性,使用了大量的模板和ifdef,可读性稍差,
我常常意识到,即使使用boost asio这样的proactor模式的io库,TCP编程仍然还是复杂,需要了解好多技术细节,
个人觉得ZeroMQ是个非常好的思路,http://www.zeromq.org/
每个项目花一两个月写tcp模块真是太蛋疼了,
要是能在巨人的肩膀上,不是更好。