【开源】C++异步网络框架,希望对感兴趣的同学带来一些启发。

qq120848369 2013-10-16 05:41:56
加精
今天发现自己已经是C++斑竹了,感谢CSDN组委会对我工作的大力支持。

于是,趁机发布一个源创的linux C++异步网络框架, 基于工作需求,偏重工程实践。

开发者不需关心 连接,监听,以及底层I/O,只需关注业务自身,这是网络框架的目标。

内置的唤醒接口可以轻松将框架扩展至多线程工作模式:
CSDN CODE: 2013.10.21添加了项目介绍

对于这类工作中常用的库,比如网络库,日志库,配置库,我不喜欢用开源代码,我更喜欢自己实现一份,根据需求慢慢的优化和扩展,作为随身携带的战斗武器,走到哪里都能掏出来用。

网络库我也发过几个,但对代码的设计实现一直不是很满意,主要源于接口的一致性不高,工程实践性不强。 所以,我也思考了很多设计方法,现在这份代码我感觉至少能够让我满意。

项目内有sample可以参考,例子的设计风格参考了我们部门常见的C++设计风格,实践性比较强。

有兴趣同学可以围观一下,暂时sample的测试没有什么内存和功能问题。

后续我会持续维护这个库,用在一些复杂的网络项目里。 没有不含BUG的代码,大家发现问题一定要反馈给我修复,谢谢。
...全文
15902 92 打赏 收藏 转发到动态 举报
写回复
用AI写文章
92 条回复
切换为时间正序
请发表友善的回复…
发表回复
czc1009 2013-12-09
  • 打赏
  • 举报
回复
先下载研究看看,楼主v5!
miliggate 2013-12-04
  • 打赏
  • 举报
回复
这年头搞异步的好多啊。。我最近也在写异步,不过是面向本地应用的 类似于go关键字 http://blog.csdn.net/fq_hayate/article/details/16962397 其实改一改应该也能支持网络
zcm_xh2008 2013-12-04
  • 打赏
  • 举报
回复
占座学习。。。
CoolEgos 2013-12-01
  • 打赏
  • 举报
回复
感觉很厉害的样子,可惜unix下完全不懂
lffpga 2013-11-29
  • 打赏
  • 举报
回复
woyaowenzi 2013-11-26
  • 打赏
  • 举报
回复
八错。
  • 打赏
  • 举报
回复
版主牛逼了。。。。果断下载
q598162221 2013-11-10
  • 打赏
  • 举报
回复
引用 83 楼 qq120848369 的回复:
[quote=引用 80 楼 q598162221 的回复:] [quote=引用 79 楼 qq120848369 的回复:] 已经将多线程支持合入框架自身, 有兴趣的同学可以继续了解: https://code.csdn.net/qq120848369/ez_poll
没办法 windows没poll模型...为了跨平台编写的代码 代码量实在受不了......后来我就用了libevent.....真心不喜欢用第三方库......可为了省事 我已经使用了boost的线程库和shareptr,我还差点使用了ACE库...... 悲剧啊[/quote] 额, 可以封装两套API, 一套是preactor的win32风格,一套是reactor的linux风格,能简单点。[/quote] 恩....现在那套iocp封装的基本差不多了,在写一个测试用例,看看效率..... 另外在preactor模式下,在设计中发现了几个悬而未决的问题 1:同一个fd应不应该在一次写操作io尚未返回时进行下一次写操作,当前做法是在保证一个fd最多只有一个线程进行写操作,直到IO完成方能进行下次写操作,在此之间的写操作会写入缓冲区..... 首先确认iocp确实同时对一个fd进行多次io投递,然后通过投递计数来保证链路层压力不会很大 2:同一个fd多次投递读操作,能提高多少效率....从直觉上讲,他只是在多核处理器上同时驱动多个处理器同时读取一个fd,在fd很多的时候这本身意义并不大,而且保证多次读完成后信息的有序,本身又就要线程同步,处理起来特别繁琐,而且效率提高在fd很多的时候基本显现不出来 .....到底有没有必要对同一个fd多次投递 读操作 3:当一个fd我自建的写缓冲区已经被用完,而这时候还有写操作在请求,我是拒绝写操作,还是把缓冲区的数据结构本身就设计成链表数组模式,一旦一个缓冲区被用完就进写入到下个缓冲区.... 4:一个信息从用户发送到实际发送完成至少要进行几次拷贝工作.....如果直接发送到链路层,即每次send直接投递不自建缓冲区,则不需要任何拷贝,只需要数据从生成就保存在堆区,直到投递完成后清除.而如果走 缓冲区则需要两次 拷贝,第一次把数据从用户那拷贝到缓冲区,第二次把数据 从缓冲区拷贝到一个新建的Buffer中发送出去(因为发送到发送完成之间 缓冲区也会一直改变,所以要建立一个新的buffer),而2次buffer的拷贝,对效率的影响到底有多严重 这些本来都是准备把基本的测试建立好之后,一个个进行测试的内容.......
kingstarer 2013-10-26
  • 打赏
  • 举报
回复
先顶再看 mark
qq120848369 2013-10-26
  • 打赏
  • 举报
回复
引用 80 楼 q598162221 的回复:
[quote=引用 79 楼 qq120848369 的回复:] 已经将多线程支持合入框架自身, 有兴趣的同学可以继续了解: https://code.csdn.net/qq120848369/ez_poll
没办法 windows没poll模型...为了跨平台编写的代码 代码量实在受不了......后来我就用了libevent.....真心不喜欢用第三方库......可为了省事 我已经使用了boost的线程库和shareptr,我还差点使用了ACE库...... 悲剧啊[/quote] 额, 可以封装两套API, 一套是preactor的win32风格,一套是reactor的linux风格,能简单点。
chunsing 2013-10-26
  • 打赏
  • 举报
回复
红包拿来啊
q598162221 2013-10-25
  • 打赏
  • 举报
回复
引用 79 楼 qq120848369 的回复:
已经将多线程支持合入框架自身, 有兴趣的同学可以继续了解: https://code.csdn.net/qq120848369/ez_poll
没办法 windows没poll模型...为了跨平台编写的代码 代码量实在受不了......后来我就用了libevent.....真心不喜欢用第三方库......可为了省事 我已经使用了boost的线程库和shareptr,我还差点使用了ACE库...... 悲剧啊
beyondcj 2013-10-24
  • 打赏
  • 举报
回复
qq120848369 2013-10-24
  • 打赏
  • 举报
回复
已经将多线程支持合入框架自身, 有兴趣的同学可以继续了解: https://code.csdn.net/qq120848369/ez_poll
hzhxxx 2013-10-24
  • 打赏
  • 举报
回复
以后还要在 版主下面混,必须得顶啊。。。
qq120848369 2013-10-23
  • 打赏
  • 举报
回复
修复了俩bug, 添加了俩接口, 给出了一个多线程sample: sample_multi,欢迎提建议。 https://code.csdn.net/qq120848369/ez_poll
sinovoice 2013-10-23
  • 打赏
  • 举报
回复
学习了 感谢楼主分享,学习了 ..非常不错
wos3008 2013-10-22
  • 打赏
  • 举报
回复
学习了 感谢楼主分享,学习了 ..非常不错
IVERS0N 2013-10-22
  • 打赏
  • 举报
回复
占座学习
zhxianbin 2013-10-22
  • 打赏
  • 举报
回复
先收藏了!!!
加载更多回复(63)

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧