C++20 Coroutine: 通用异步任务 Task

首先代码源自:https://www.bennyhuo.com/2022/03/19/cpp-coroutines-04-task/
这段代码使用协程实现了一个通用的异步任务执行类 Task,支持设置回调函数并将在 Task 完成后执行回调,作者文章里讲了设计思路,但是总体来说没有对执行流程讲的那么细,对协程了解不深刻的话可能看的会比较懵,所以我在这里把协程执行的整个过程注释了一下。
Task、TaskPromise 和 TaskAwaiter 覆盖到了大部分的协程执行过程,把这几个类的实现理解了那基本上就可以说已经理解了 c++ 协程的工作方式。
阅读下面这段代码的方式建议通过 main 函数开始,对照运行结果一点一点来看。
Source Code
运行结果分析