(二)从操作系统的调度说起
我们接触的主流的操作系统, 如 Windows, 或者 Linux, 或者 MacOS, 都是抢占式多任务的操作系统, 所以大家对抢占式多任务的操作系统会比较熟悉...., 一般是借签系统级的实现, 移除一些非必须的操作所达成的, 代表的方案有大家熟知的libco和 boost::context, 也就是我们通常所说的有栈协程实现
无栈实现, 最开始是纯粹使用 duff...如不需要挂起, 则直接执行后续逻辑, 这里也就是继续到__resume_counter_2这个 label 执行重入点的逻辑
await_suspend() - 中断点触发的时候执行的逻辑, 业务中我们一般在此处发起异步操作...对象, 我们能够扩展co_await支持的业务, 这种实现侵入性低, 实际使用负担小
对于异步操作较多, 多节点较多, 特别是多个异步操作级联的使用场景, 很值得实装....对比 17 的实现, 我们的 SchedTask 对象中主要保留了:reflection::UserObject mResumeObject: 主要用于异步等待的执行, 当一个异步等待成功执行的时候,