【发布时间】:2010-09-12 09:56:09
【问题描述】:
我怀疑它是否可以便携,但有什么解决方案吗?我认为可以通过创建一个备用堆栈并在函数入口处重置 SP、BP 和 IP,并让产量保存 IP 并恢复 SP+BP 来完成。析构函数和异常安全似乎很棘手,但可以解决。
完成了吗?不可能吗?
【问题讨论】:
-
只是想指出协程在 C++ 中是可能的。升压是一种可能性。另一个是被批准为 C++17 技术规范的协程。已经有两个支持的编译器(VC14 和 Clang),TS 很可能会在 C++17 之后成为语言。详情见我的回答。
-
对于 C 程序员,这里有一篇 Simon Tatham 撰写的文章,C 中的协程,其中包含多种方法。 chiark.greenend.org.uk/~sgtatham/coroutines.html 有些比其他的更复杂。