这个版本功能和特性改动并不多,主要是改进了下协程的调度模块,实现对 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 的退出事件进行等待,关于这块内部其实还是做了很多事的。
例如:
针对 http、file、socket、data 等流数据,实现统一接口进行读写,并且支持: 阻塞、非阻塞、异步 三种读写模式。 支持中间增加多层 filter 流进行流过滤,实现边读取,内部边进行解压、编码转换、加密等操作,极大的减少了内存使用。
主要提供以下模块:
stream
:通用非阻塞流,用于一般的单独 io 处理,同时支持协程以实现异步传输。transfer
:流传输器,维护两路流的传输。static_stream
:针对静态数据 buffer 优化的静态流,用于轻量快速的数据解析。memset_u16
、memset_u32
等接口,并对其进行高度优化,尤其适合图形渲染程序 1
keygen88 2020-03-01 11:05:42 +08:00 1
支持一下
|
2
kiwier 2020-03-01 11:13:07 +08:00 1
支持一下
|
4
magicfuzzx 2020-03-01 12:23:12 +08:00
厉害,国内有这么牛逼的跨平台 c++开源库,了不起
|
5
cabing 2020-03-01 12:28:11 +08:00
赞一个。
这个和腾讯的开源的协程库有过比较吗、 |
6
waruqi OP @magicfuzzx 是 c 库哦,不是 c++
|
9
aaaaaaaaa 2020-03-18 13:52:44 +08:00
项目是好项目,不过你们的群主(还是管理员?)好大的官威啊
你们群 400+人,验证问题让加二群,但还没满,我就申请入群,被拒,再次申请,我说还没满,为什么不让进,然后没下文了 我以为管理直接给我忽略了,结果下午一看,我已被踢出群?也就是同意了接着 T 了我? T 着玩吗? 好吧,惹不起 |