此版本主要增加stackless协程模块以及为嵌入式平台增加micro微模块编译(~64K)。
此stackless协程模块比之前的stackfull协程实现更加的轻量高效,切换效率提升5、6倍,在macosx上测试1000w次切换仅需40ms
当然易用性和灵活性上,还是stackfull模式更有优势(tbox两种模式都已支持,接口类似)。
stackless协程使用见:stackless协程使用文档
stackfull协程使用见:stackfull协程使用文档
更多协程服务器demo实现,请参考:协程examples
新特性
针对协程上下文切换,支持mips架构
添加__tb_thread_local__关键字宏
添加
继续阅读 »
在分析了各大开源协程库实现后,最终选择参考boost.context的汇编实现,来写tbox的切换内核。
在这过程中,我对boost各个架构平台下的context切换,都进行了分析和测试。
在macosx i386和mips平台上实现协程切换时,发现boost那套汇编实现是有问题的,如果放到tbox切换demo上运行,会直接挂掉。
在分析这两个架构上,boost.context切换实现问题,这边先贴下tbox上的context切换demo,方便之后的讲解:
继续阅读 »
简介
Benchbox是一个基准测试包,基于tbox和xmake,里面包含许多针对第三方库功能的性能基准测试和对比,可以很方便的扩展测试用例和模块。
目前内置:各大开源协程库性能基准测试,后续还会陆续增加各种开源库模块的分析测试
测试报告仅供参考,测试代码或者结果上如有问题,可以提交issues
编译
请先安装: xmake
然后运行:
bash
$ xmake
协程切换测试报告(2个协程)
Run
bash
$ xmake coroutine -n switch
Macosx (x86_64)
tbox: 10000000 switches in 205 ms, 4
继续阅读 »