作者回复: :thumbup
作者回复: 感谢反馈,源代码正在做更新。 这里我们协程是一个简单的“示例性”封装,实际要通过协程处理I/O肯定要以IOCP、epoll和kqueue等技术为基础,并利用协程作为接口封装,在避免多线程与锁的情况下实现任务上下文切换,而不是直接使用filesystem这种简单的同步I/O接口,但是如果这样就会偏离我们想要讲解的重点,所以就使用filesystem做了简单的示例。
作者回复: Q1: 代码前面已经using asyncpp::task::Coroutine,所以这里asyncpp::task::Coroutine和Coroutine是一样的,这里只是演示引用该类型的不同用法,没有其他不同。 Q2:C++的协程提供了: (1)关键字:协程只提供了co_await、co_yield这两个关键字。 (2)基础类型支持:coroutine_handle是C++协程标准库内提供的类型 (3)协程协议框架:其他部分只定义了一个协议框架,包括Coroutine、Promise、Awaitable和Awaiter都是标准提出的概念,并且定义了相关的标准协议,但是并没有提供标准实现或者工具,需要开发者熟悉这些协议然后自己实现。 所以说,就目前来说(在C++26或后续标准到来以前)实现一个C++20的协程框架确实并不容易,但是基于框架再做业务开发就会简单很多。