对于无GC的情况, 也有部分项目使用这种模式来实现自己的协程, 但对比stackful的协程使用上会稍显麻烦, 原来可以正常使用的stack变量需要手动处理, 存储在特定的地方.
1.3 C++20的coroutine...(上例中的 p, c, local, locals等变量), 虽然我们没法使用栈变量(比较好的一点大部分情况下明确栈变量编译器都会直接报错, 有直接的提示), 我们可以通过参数表来声明需要在协程中使用到的临时变量...略微麻烦一点, 但当前的整个实现, 除了刚才说的栈变量需要用特殊的方式使用外, 已经可以比较好的使用函数式编程的方式去组织编写业务代码了.
3.1 stackless coroutine核心机制...协程对象的具体实现, 通过模板, 我们可以很好的完成 参数列表 -> std::tuple, 外部函数-> std::function的转换存储, 我们重点关注resume()的实现:
virtual...我们目前的做法是定义一个LocalStructs, 把需要用到的变量声明在其中, 然后再作为函数参数传递到函数中使用.