c++造了个异步框架的轮子来练手

2016-09-01 10:00:28 +08:00
 Masutangu

最近用 c++ 基于 libuv 造了个异步框架的轮子,废话不多说。

源码在此: https://github.com/Masutangu/SAF

同时写了篇文章聊了下异步框架设计的思想和实现:《简单异步应用框架的实现》

c++ 停留在写业务逻辑的水平,希望得到 c++高手的意见。另外 libuv 是 c 库,和 c++ 结合起来代码写的有点绕(主要是回调不好传),大家多多提点意见,欢迎交流~

4162 次点击
所在节点    分享创造
19 条回复
KingHL
2016-09-01 11:12:09 +08:00
点个赞,支持。
watzds
2016-09-01 11:35:37 +08:00
mason961125
2016-09-01 12:25:08 +08:00
楼主用的 Clion ?
Masutangu
2016-09-01 13:20:53 +08:00
@mason961125 是的 怎么看出来的..
mason961125
2016-09-01 18:12:17 +08:00
@Masutangu 开头注释的风格
Masutangu
2016-09-01 18:57:09 +08:00
@mason961125 老司机..哈哈
mason961125
2016-09-01 20:57:16 +08:00
@Masutangu 为什么没考虑用 libevent 或者 libev 呢?
jerseyjerk
2016-09-01 21:01:26 +08:00
点赞。几个小问题:支持可变长度消息吗?支持读 /写超时吗?可以 disable nagle 吗(低延迟场景中常用)?另外我看了一下 buffer.cpp 的 append 方法,这个方法只 reallocate 两倍,如果 Len 超过两倍,那 memcpy 会 overrun memory 的吧?以上之言如有错误请轻喷。
Masutangu
2016-09-02 08:14:48 +08:00
@jerseyjerk 消息的打解包由业务来实现,所以消息长度是由业务来定制的。读写超时后续我补充上。 disable nagle 的话,我得看看 libuv 是否有提供选项支持(之前看文档没有看到过), append 方法 bug ,粗心了,我 fix 下。谢谢提出这么多问题哈哈
Masutangu
2016-09-02 08:15:21 +08:00
@mason961125 因为最近想看看 libuv 的代码 所以先用用熟悉下~
macrosea
2016-09-02 13:57:14 +08:00
react-cpp 用 libev 封装的异步框架 , 非常不错, C++社区活跃了, C++才能再现辉煌
https://github.com/CopernicaMarketingSoftware/REACT-CPP
matthewgao
2016-09-02 16:10:42 +08:00
似乎不支持状态间消息同步?
Masutangu
2016-09-02 20:26:14 +08:00
@macrosea 感谢分享!有空学习下
Masutangu
2016-09-02 20:26:47 +08:00
@matthewgao 状态间消息同步是指?业务一开始创建的消息对象会在各个状态间透传
matthewgao
2016-09-02 22:42:36 +08:00
@Masutangu 我的意思是,比如 state2 的运行依赖于 state1 返回的数据
Masutangu
2016-09-02 23:43:35 +08:00
@matthewgao 是的,一开始创建的消息对象,其指针会传入每个 state 中,所以可以通过消息对象来传递状态间依赖的数据
Masutangu
2016-09-02 23:50:07 +08:00
@matthewgao 估计这块我解释得不够清楚,等周末我更新下博客,补充几个图例
kingddc314
2016-09-03 08:31:50 +08:00
c++的异步应该支持 Lambda
Masutangu
2016-09-04 15:45:17 +08:00
@kingddc314 是指框架提供的接口支持么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/303099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX