协程近些年也比较火,了解了其机制后,越发觉得它确实是个好东西,平时用 C 比较多,于是想着动手弄一个 C 语言的协程。看了一些资料和项目之后,发现网上也不乏很多 C 实现的协程项目。看下来,每个项目都有各自适合的应用场景,比如 Protothreads 这类的蝇量级协程就更适合用于在嵌入式场景,带来的时空开销很小;还有一些轻量级项目,并不提供完善的功能,但是寥寥数百行代码就能把协程的机制交代清楚,很适用于学习;再往上看,一些大一点的项目可能就涉及到一些依赖......
总而言之,这些 C 协程项目多少存在改进空间,也都有各自发挥的舞台,这时我对自己这个项目的构想是:
- 可读性。代码可读性尽量高,易于维护,多年以后不写注释也能一眼看懂
- 实用性。功能尽可能完善,能支持一般场景,性能尽可能高
- 易用性。看示例就可以直接上手,示例应该清晰明了
这里并不是要搞标新立异立异,或者要在 C 协程上一统江湖。相信其他写过开源项目的朋友也能理解,写一个开源小项目很多时候不是为了物质追求,如果有人能用、对人有用、别人能提意见或鼓励,那就是莫大的荣誉。
项目地址: https://github.com/piaodazhu/dyco-coroutine (觉得可以麻烦给个 star