ezCoroutine协程原型库只是个原型库,但是已经能够支持1000K以上数量的协程运行,而且是stackful模式。基本的对外接口有两类,一类是类似Posix线程的接口:协程创建threadCreat,协程回收threadJoin,调度函数switch_to;另外一类是类似lua协程接口,但是有所不同,我们的返回规则更加简单,所以功能也有所限制:挂起协程yield,恢复协程resume;然后是一些辅助函数接口:通过协程号寻找到协程结构体函数findThread,初始化协程函数init,销毁协程函数destroy,destroyAll函数,以及printThread,printLoop,printSharedStack等打印函数。

  具体代码放在GitHub上:https://github.com/Yuandong-Chen/ezCoroutine

  注意,该库只能在X86/X64 Linux环境下用gnu/gcc集成的编译工具(不能用llvm/clang),代码只支持32位,得用-m32参数,而且得加上-fno-stack-protector参数关闭栈检测机制,否则我不能保证不出现bus IO error 和 segment  fault。因为具体实现我用了一些特殊的手段,smash了栈空间,以后会逐步改善。

  下面通过几个问题来介绍: 

1.怎么用这个协程库呢?

这里给出经典的生产者-消费者模式的例子:

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 1 /************************* T
        
		

网友评论