C++20 Coroutine: 通用異步任務(wù) Task

首先代碼源自:https://www.bennyhuo.com/2022/03/19/cpp-coroutines-04-task/
這段代碼使用協(xié)程實現(xiàn)了一個通用的異步任務(wù)執(zhí)行類 Task,支持設(shè)置回調(diào)函數(shù)并將在 Task 完成后執(zhí)行回調(diào),作者文章里講了設(shè)計思路,但是總體來說沒有對執(zhí)行流程講的那么細,對協(xié)程了解不深刻的話可能看的會比較懵,所以我在這里把協(xié)程執(zhí)行的整個過程注釋了一下。
Task、TaskPromise 和 TaskAwaiter 覆蓋到了大部分的協(xié)程執(zhí)行過程,把這幾個類的實現(xiàn)理解了那基本上就可以說已經(jīng)理解了 c++ 協(xié)程的工作方式。
閱讀下面這段代碼的方式建議通過 main 函數(shù)開始,對照運行結(jié)果一點一點來看。
Source Code
運行結(jié)果分析