++中的部分历史, 我们来简单了解一下协程的执行机制, 这里我们直接以 C++20 为例, 先来看一下概览图:
关于协程的执行, 我们主要关注以下这些地方:
1.3.1 中断点和重入点的定义
有栈协程和无栈协程定义中断点和重入点的方式和机制略有差异...libco, 与 boost.context 这样的高性能有栈协程实现机制后, 标准委员会还会继续寻求无栈协程的解决方案, 并最终将其作为 C++协程的实现机制呢, 这里分析主要的原因是为了解决有栈协程天然存在的限制...其中比较重要的一部分就是协程了, 当时引入协程的方式和目的都比较直接, 首先是使用 Duff Device Hack 的机制来实现整个无栈协程....实际使用下来, 协程和调度器主要带来了以下这些优点:
避免大量中间类的定义和使用.
基于逻辑过程本身用串行的方式实现相关代码即可(可参考后续切场景的例子).
更容易写出数据驱动向的实现....另外, 相关的调度器的实现, 与 C++17 和 C++20 都是兼容的, 像我们项目当时的实现, 是可以很好的做到 C++20 与 C++17 的协程混用的, 也样也方便在过渡阶段, 项目可以更平滑的从