您现在的位置是:首页 > 文章详情

每日一搏 | C语言中用 System V ucontext 实现的协程切换

日期:2020-02-01点击:424

此文在看了 python 中基于 yieldyield from (同步基于 yield 的子生成器/协程)机制的生成器/协程后,就想在C语言中实现类似机制。

在阅读 System V ucontext 手册后,便选择基于他来实现(要是此文自己实现“上下文切换描述”的话,该部分功能所花时间应该会比已有C代码所花时间要多)。所实现功能包括:

  1. yield
  2. yield from
  3. 基于 yield 和 yield from 机制协程的调度器 loop

这些功能皆在 ln_cs.c 中实现,experiences目录下为体验以上功能机制的例子(运行体验可参见 doc 目录下的文档)。

. ├── doc │ ├── A coroutine switching implement ... in C-language.md │ └── An optimization for ... in C-language.md ├── experiences │ ├── make_e │ ├── loop_e │ │ ├── loop_e.c │ │ ├── Makefile │ ├── yield_e │ │ ├── Makefile │ │ └── yield_e.c │ └── yield_from_e │ ├── Makefile │ └── yield_from_e.c ├── include │ ├── ln_comm.h │ └── ln_cs.h ├── readme.md └── src └── ln_cs.c 

核心代码 ln_cs.c 经过此文的一些技巧性修剪后不到 500 行,所以还是很想分享的——便补写了文档与源码一起上传到了 github 和 gitee之上。

用过 System V ucontext 或对CPU执行程序原理有所理解的同学应该都能胜任对该程序的阅读理解,有兴趣或与此文具相同程序理念(从源码或文档中可以看出一些吧)的同学一起出出新招继续提升下该程序吧。

原文链接:https://my.oschina.net/misskissC/blog/3162374
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章