基于以下情况,看起来 C + + 20中的协程将是无堆栈的。
Https://en.cppreference.com/w/cpp/language/coroutines
我担心的原因有很多:
使用无栈协同例程,只有顶级例程可以是 暂停。任何由最高级别的例行程序调用的例行程序可能不会自己 中提供暂停/恢复操作 通用库中的例程。
由于需要自定义分配器和内存池,因此需要更详细的代码。
如果任务等待操作系统为其分配一些内存(不使用内存池) ,则速度会减慢。
鉴于这些原因,我真的希望我对当前协程的看法是错误的。
这个问题分为三个部分:
协同程序状态是通过非数组在堆上分配的 新来的接线员。 Https://en.cppreference.com/w/cpp/language/coroutines
编辑:
我现在正在浏览 Cppcon 会谈的协同程序,如果我找到任何答案,我自己的问题,我会张贴(没有目前为止)。
2014年 CppCon: Gor Nishanov“ waiting 2.0: Stackless Resumable function”
Https://www.youtube.com/watch?v=kuhsjfsbine
2016年 CppCon: James McNellis“ C + + 协程介绍”