在技术成长的路上,有过汗水,泪水,也有过风雨之后成长的喜悦。
本人算是一名中年油腻大叔(80后), 记得是在2000年左右注册了csdn.net. 做了10多年技术开发, 以网络通讯和音视频为主。现想利用工作之余,将自己一些经验,以代码方式分享出来, 期待和大家一起探讨技术,一起参与开源项目。
我之前用过ACE,libevent, 后来又用过boost asio。 有几点感受:
ACE
http://www.cs.wustl.edu/~schmidt/ACE-overview.html
ACE 学术性很强,是POSA2设计模式的代码实作, 项目年代较为久远, 为了跨平台, 做了很多适配,坑不少,特别是很多地方delete this. 遇到问题慢慢

填坑。我在项目中,断断续续使用了5-7年。
libevent: 在实际项目中未使用, 不作多的评价。
boost asio: 设计思想是proacto模式, 看过部分代码,基本都是泛型的代码。 相较于ACE相比,在对象内存管理方面(特别是内存分配与释放,避免内存泄漏)有很大提升。 我从13年开始使用, 跨平台体验也不错,包括在android, 服务端,嵌入式系统,总体是比较满意的,唯一的一点是,遇到问题看源码, 头大。本来 简单的事情,搞得很复杂。
本着学习和分享的精神,我打算构建一个小巧的网络IO服务框架,
有几个特点:
1 只支持linux平台(跨平台要搞出一大堆的适配)
2 充分利用C++11, 14特性,尽可能避免裸指针(这玩意是个不容易降服的神兽)
3 架构清蜥,把代码写好, 把文档写好。
4 简单和实用为原则,做且只做网络IO相关的功能
项目:cute
目标:构建轻巧的高性能IO服务框架
https://github.com/zhaozhencn/cute
目前已实现的功能:
1 reactor整体框架(服务端和客户端)
2 epoll封装
3 定时器
因时间有限,水平有限, 请大家本着批判和学习的精神,给予反馈。 也欢迎参与和交流。 有兴趣加群: 594912290