最近终于腾出时间把两年前的 issues#24给解决了,现在 windows 上已经完全支持基于 IOCP 的协程 io 处理。
大家有兴趣的话,或者有需要用 c 开发跨平台程序的同学可以关注下哦,里面有各种常用模块,并且提供了灵活的裁剪编译模式,方便大家只编译使用需要的模块。
摆着代码即文档的原则,实现接口都有详细注释说明,同时 TBOX 也是个代码仓库,大家如果在写系统程序的时候,一些系统接口的使用可以在 tbox 的源码的 platform 目录中搜索,找到相关实现来做参考哦。
前两天刚好发了新版本(v1.6.3),花了我一年多时间修复了各种问题,不过中途又跑去捣鼓xmake(一个基于 lua 的跨平台编译工具)了,大家也可以关注下,嘿嘿。
TBOX 是一个用 c 语言实现的跨平台开发库。
针对各个平台,封装了统一的接口,简化了各类开发过程中常用操作,使你在开发过程中,更加关注实际应用的开发,而不是把时间浪费在琐碎的接口兼容性上面,并且充分利用了各个平台独有的一些特性进行优化。
这个项目的目的,是为了使 C 开发更加的简单高效。
目前支持的平台有:
通过xmake支持各种编译模式:
如果你想了解更多,请参考:
针对 http、file、socket、data 等流数据,实现统一接口进行读写,并且支持: 阻塞、非阻塞、异步 三种读写模式。 支持中间增加多层 filter 流进行流过滤,实现边读取,内部边进行解压、编码转换、加密等操作,极大的减少了内存使用。
主要提供以下模块:
stream
:通用非阻塞流,用于一般的单独 io 处理,同时支持协程以实现异步传输。transfer
:流传输器,维护两路流的传输。static_stream
:针对静态数据 buffer 优化的静态流,用于轻量快速的数据解析。memset_u16
、memset_u32
等接口,并对其进行高度优化,尤其适合图形渲染程序请先安装: xmake
# 默认直接编译当前主机平台
$ cd ./tbox
$ xmake
# 编译 mingw 平台
$ cd ./tbox
$ xmake f -p mingw --sdk=/home/mingwsdk
$ xmake
# 编译 iphoneos 平台
$ cd ./tbox
$ xmake f -p iphoneos
$ xmake
# 编译 android 平台
$ cd ./tbox
$ xmake f -p android --ndk=xxxxx
$ xmake
# 交叉编译
$ cd ./tbox
$ xmake f -p linux --sdk=/home/sdk #--bin=/home/sdk/bin
$ xmake
#include "tbox/tbox.h"
int main(int argc, char** argv)
{
// init tbox
if (!tb_init(tb_null, tb_null)) return 0;
// trace
tb_trace_i("hello tbox");
// init vector
tb_vector_ref_t vector = tb_vector_init(0, tb_element_cstr(tb_true));
if (vector)
{
// insert item
tb_vector_insert_tail(vector, "hello");
tb_vector_insert_tail(vector, "tbox");
// dump all items
tb_for_all (tb_char_t const*, cstr, vector)
{
// trace
tb_trace_i("%s", cstr);
}
// exit vector
tb_vector_exit(vector);
}
// init stream
tb_stream_ref_t stream = tb_stream_init_from_url("http://www.xxx.com/file.txt");
if (stream)
{
// open stream
if (tb_stream_open(stream))
{
// read line
tb_long_t size = 0;
tb_char_t line[TB_STREAM_BLOCK_MAXN];
while ((size = tb_stream_bread_line(stream, line, sizeof(line))) >= 0)
{
// trace
tb_trace_i("line: %s", line);
}
}
// exit stream
tb_stream_exit(stream);
}
// wait
getchar();
// exit tbox
tb_exit();
return 0;
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.