2016-02-25 ruki
New features Add smallest configure option Add process operation interfaces Changes Improve envirnoment interfaces Modify xmake.lua for supporting xmake v2.x Bugs fixed Fix ltimer bug Fix asio memory leaks bug Fix asio httpd response bug on linux Fix path bug for windows 继续阅读 »
2016-08-29 ruki
新特性 增加同时等待多个进程接口 增加uuid生成器 增加hash库模块 添加__tb_deprecated__关键字以及配置选项 改进 移动部分utils接口到hash模块 重写random生成器 Bugs修复 修复stdout在vs2015以上版本的兼容性问题 修复进程参数长度限制 继续阅读 »
2016-10-30 ruki
New features Support make command and compile directly without xmake Add switch context interfaces into platform module Add coroutine module (supports i386, x86_64, arm, arm64 ..) Add simple http server demo using coroutine Add simple spider using coroutine Add io poller interfaces(with epoll, poll, kqueue, select) Su 继续阅读 »
2016-12-07 ruki
Stackless introduction Stackfull introduction More coroutine examples New features Support coroutine context switch for mips Add __tb_thread_local__ keyword macro Add --micro=y|n option to compiling micro library (~64K) for the embed system Add tb_addrinfo_addr and tb_addrinfo_name interfaces Add stackless coroutine A 继续阅读 »
2017-08-30 ruki
新特性 增加ping测试程序 改进 修改license,使用更加宽松的Apache License 2.0 重命名--smallest=y|n选项到--small=y|n 使用stat64支持大文件信息获取 改进tb_file_copy,更加快速的文件copy,并且修复copy后文件权限丢失问题 改进posix平台下的路径操作 改进socket初始化接口,支持icmp协议 改进xmake.lua,移除内置二进制依赖包文件 Bugs修复 修复创建文件权限不对问题 修复文件和目录路径问题 修复无法移除带有无效软链的目录问题 修复无法移除只读文件问题 #34: 修复缓存时间和协程sleep不准问题 #35: 修复epoll边缘触发模 继续阅读 »
2017-08-30 ruki
New features Add ping demo for network Changes Modify license to Apache License 2.0 Rename --smallest=y|n option to --small=y|n Support stat64 Improve copy speed and fix permissions for tb_file_copy Improve path operation for posix platform Improve socket interfaces and support icmp Improve xmake.lua and remove binar 继续阅读 »
2016-08-29 ruki
New features Add wait multi-processes interface Add uuid generator Add hash library module Add __tb_deprecated__ keyword and option Changes Move some utils interfaces to the hash module Rewrite random generator Bugs fixed Fix stdout compatibility issue for vs2015 Fix process arguments length limit 继续阅读 »
2016-02-05 ruki
新特性 自动检测所有系统libc接口,优先使用系统版本 支持自定义内存分配器,并且能够在debug模式下,获取每次分配的代码位置信息,用于自定义追踪 增加轻量级static_pool来维护整块buffer的内存分配,适合局部管理部分内存,pool虽然也能维护,但是底层基于large_pool,比较重量级,适合全局管理内存 增加stream快速读取全部数据到string的接口 增加adler32 hash算法 增加tb_memmem接口 采用pcre/pcre2/posix regex实现正则表达式库 改进 优化stream,支持对字符设备文件的读写 修改tb_init接口,增加allocator自定义内存分配器参数,实现用户的侵 继续阅读 »
2016-11-13 ruki
在分析了各大开源协程库实现后,最终选择参考boost.context的汇编实现,来写tbox的切换内核。 在这过程中,我对boost各个架构平台下的context切换,都进行了分析和测试。 在macosx i386和mips平台上实现协程切换时,发现boost那套汇编实现是有问题的,如果放到tbox切换demo上运行,会直接挂掉。 在分析这两个架构上,boost.context切换实现问题,这边先贴下tbox上的context切换demo,方便之后的讲解: 继续阅读 »
2016-02-04 ruki
TBOX的线程池通过在每个worker中批量一次拉取多个task,对锁的竞争进行了优化。 由于每个task的函数实现不会太多,所以可以根据每个task的函数地址做hash,统计出每个task执行所花费的平均时间。然后根据这个平均值来动态计算每个worker一次拉取的task的数量,TBOX里面默认每个worker一次拉取10s的task量,这样可以尽可能的避免worker间锁的频繁抢占。 所有从等待队列被拉取出来的task,都会被放到pending队列中去,如果等待队列中的task都被取完了,某个worker处于了空闲状态,就会尝试去pending中,重新拉取其他worker还没有执行到的task, 这样可以解决某些task耗时 继续阅读 »