编辑“︁
Protothreads
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
==评价== Protothreads与其他[[协程]]或纯线程实现有关的特征是它们都是无栈的。这有好处也有坏处。坏处是在protothread内的[[局部变量]],在经历了yield而再恢复执行之后,不能信任它们仍保留了原来的值。它们要保持自己的状态,就必须通过使用[[静态变量]]或函数外部的变量,经常是[[全局变量]]<ref>A. Dunkels, O. Schmidt, T. Voigt, and M. Ali, [http://doi.acm.org/10.1145/1182807.1182811 ''Protothreads: Simplifying Event-Driven Programming of Memory-Constrained Embedded Systems''], Proc. ACM [[SenSys]], Boulder, CO, USA, Nov 2006. ([http://dunkels.com/adam/dunkels06protothreads.pdf PDF] {{Wayback|url=http://dunkels.com/adam/dunkels06protothreads.pdf |date=20200728200813 }}, [http://dunkels.com/adam/dunkels06protothreads.ppt Presentation slides] {{Wayback|url=http://dunkels.com/adam/dunkels06protothreads.ppt |date=20200728214755 }})</ref>。好处是它们是非常轻量级的,因而可用于很多内存受限的系统,就像对于小型[[微控制器]],其他解决方案可能是不现实的或不是真想要的。 知名于[[达夫设备]]的{{le|Tom Duff|Tom Duff}},曾评价这种方法的缺点:“探究一种类似在中断驱动的状态机中所用到的技巧太恐怖了。[...] 我从来都不认为它是胜任的通用协程实现,因为要拥有一个协程的多个同时活动是不容易的,并且使用这种方法要使协程在除了在顶层例程内以外任何地方放弃控制权都是不可能的。简单的汇编语言栈交换库就能让你做到这二者。”<ref name="tatham_duff">{{Cite web |url=https://brainwagon.org/2005/03/05/coroutines-in-c/#comment-1878 |title=存档副本 |accessdate=2019-11-26 |archive-date=2019-07-23 |archive-url=https://web.archive.org/web/20190723071827/https://brainwagon.org/2005/03/05/coroutines-in-c/#comment-1878 |dead-url=no }}</ref>
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息