基于以下内容,C ++ 20中的协程看起来像是无堆栈的。
https://en.cppreference.com/w/cpp/language/coroutines
我担心的原因有很多:
使用无堆栈协程时,只有顶层例程可以被挂起。该顶级例程调用的任何例程本身都不会暂停。这禁止在通用库中的例程中提供挂起/恢复操作。
由于需要自定义分配器和内存池,因此代码更加详细。
如果任务等待操作系统为它分配一些内存(没有内存池),则速度较慢。
鉴于这些原因,我真的希望我对当前的协程是错误的。
问题分为三个部分:
协程状态是通过非数组运算符new在堆上分配的。 https://en.cppreference.com/w/cpp/language/coroutines
编辑:
我现在正在为协程进行cppcon讨论,如果我对自己的问题有任何答案,我将其发布(到目前为止没有任何内容)。
CppCon 2014:Gor Nishanov“等待2.0:无堆栈可恢复函数”
https://www.youtube.com/watch?v=KUhSjfSbINE
CppCon 2016:James McNellis“ C ++协程简介”