有 co_yield,还有别的关键字和类型。python 你定义一个函数 yield 就直接是 generator 了,可目前 c++20 的标准库还不行,你要借助库基础设施定义若干接口来实现好 generator 类型,才能让 co_yield 的返回值能用。
比如 vc 就提供了 generator 和 awaitable 的实现。
关键大头不是 generator,而是用这套机制包装非阻塞 io,提供协程化的异步 io 函数,然后还要提供协程调度器,给出诸如线程池上的用户态线程的东西,这是 asio 库做的。也是近年大家关注协程的动机。
c++ 的协程未来还要加上 executor、net 这些东西才算实用。当然目前已经有一些第三方库了。
【 在 gang2k 的大作中提到: 】
: 那还真的像yield
: 【 在 milksea 的大作中提到: 】
: : c++20的协程是个很底层的东西,目前可以说只是半成品,暴露的接口是用来实现 generator 或者 task 的。
: ...................
--
修改:milksea FROM 114.249.199.*
FROM 114.249.199.*