跨平台 c 开发库 tbox v1.6.5 发布,改进协程调度支持

2020-03-01 10:10:10 +08:00
 waruqi

这个版本功能和特性改动并不多,主要是改进了下协程的调度模块,实现对 process, socket,pipe 这三种对象间的统一调度支持,我们可以在协程中同时操作进程,socket 还有管道。

这有赖于 tbox 提供的 poller 模块,统一封装了对 epoll/kqueue/select/poll/iocp 等接口,实现跨平台的等待 socket/pipe 对象事件。

相关 poller 接口主要有下面四个,其中 object 可以是 process/pipe/socket 对象,然后设置上对应的事件就可以去同时 wait 了。

tb_bool_t tb_poller_insert(tb_poller_ref_t poller, tb_poller_object_ref_t object, tb_size_t events, tb_cpointer_t priv);
tb_bool_t tb_poller_remove(tb_poller_ref_t poller, tb_poller_object_ref_t object);
tb_bool_t tb_poller_modify(tb_poller_ref_t poller, tb_poller_object_ref_t object, tb_size_t events, tb_cpointer_t priv);
tb_long_t tb_poller_wait(tb_poller_ref_t poller,   tb_poller_event_func_t func, tb_long_t timeout);

另外,poller 还对进程事件的等待也加上了支持,可以通过相同的 wait 接口同时对 process 的退出事件进行等待,关于这块内部其实还是做了很多事的。

例如:

  1. win 上通过 thread+WaitForMultipleObjects 的方式来对接到 poller
  2. unix 上通过 thread/waitpid 的方式来对接到 poller

更新内容

新特性

改进

特性

流库

针对 http、file、socket、data 等流数据,实现统一接口进行读写,并且支持: 阻塞、非阻塞、异步 三种读写模式。 支持中间增加多层 filter 流进行流过滤,实现边读取,内部边进行解压、编码转换、加密等操作,极大的减少了内存使用。

主要提供以下模块:

协程库

数据库

xml 库

内存库

容器库

算法库

网络库

数学运算库

libc 库

libm 库

object 库

平台库

压缩库

字符编码库

实用工具库

正则表达式库

一些使用 tbox 的项目:

1988 次点击
所在节点    程序员
9 条回复
keygen88
2020-03-01 11:05:42 +08:00
支持一下
kiwier
2020-03-01 11:13:07 +08:00
支持一下
waruqi
2020-03-01 12:08:16 +08:00
@kiwier
@keygen88 谢谢支持
magicfuzzx
2020-03-01 12:23:12 +08:00
厉害,国内有这么牛逼的跨平台 c++开源库,了不起
cabing
2020-03-01 12:28:11 +08:00
赞一个。

这个和腾讯的开源的协程库有过比较吗、
waruqi
2020-03-01 12:52:06 +08:00
@magicfuzzx 是 c 库哦,不是 c++
waruqi
2020-03-01 12:54:58 +08:00
@cabing 很久之前有基准测试对比,不过好久之前了,现在没参考价值,你可以自己对比下看看。。
cabing
2020-03-01 13:45:46 +08:00
@waruqi 嗯。好的。
aaaaaaaaa
2020-03-18 13:52:44 +08:00
项目是好项目,不过你们的群主(还是管理员?)好大的官威啊

你们群 400+人,验证问题让加二群,但还没满,我就申请入群,被拒,再次申请,我说还没满,为什么不让进,然后没下文了

我以为管理直接给我忽略了,结果下午一看,我已被踢出群?也就是同意了接着 T 了我? T 着玩吗?

好吧,惹不起

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

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

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

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

© 2021 V2EX