C++核心技术:协程

1 分钟阅读 192 字 + 81 词
有栈和无栈协程
从概念上讲,有栈协程和goroutine基本是一个概念,都是由用户自行调度的、有自己的独立的栈空间的运行单元。这样的却带你当然就是栈的空间占用和切换栈的开销了。
无栈协程自己没有独立的栈空间,每个协程只需要一个很小的栈帧 (一般而言需要分配到 上),空间占用小,也没有 栈的切换开销
C++20的协程是无栈的。部分原因是有栈协程可以使用纯库方式实现,而无栈协程需要一点编译器魔法帮忙。毕竟协程里面的局部变量都是要放到堆上而不是栈上。