渡劫 C++ 协程(2):实现一个序列生成器

您所在的位置:网站首页 协程应用场景 渡劫 C++ 协程(2):实现一个序列生成器

渡劫 C++ 协程(2):实现一个序列生成器

2024-07-10 13:17| 来源: 网络整理| 查看: 265

序列生成器是一个非常经典的协程应用场景。

渡劫 C++ 协程(0):前言渡劫 C++ 协程(1):C++ 协程概览渡劫 C++ 协程(2):实现一个序列生成器渡劫 C++ 协程(3):序列生成器的泛化和函数式变换渡劫 C++ 协程(4):通用异步任务 Task渡劫 C++ 协程(5):协程的调度器渡劫 C++ 协程(6):基于协程的挂起实现无阻塞的 sleep渡劫 C++ 协程(7):用于协程之间消息传递的 Channel渡劫 C++ 协程(8):通用 Awaiter渡劫 C++ 协程(9):一个简单的示例渡劫 C++ 协程(10):后记实现目标

现在我们已经了解了绝大部分 C++ 协程的特性,可以试着来实现一些小案例了。

简单的说,序列生成器通常的实现就是在一个协程内部通过某种方式向外部传一个值出去,并且将自己挂起,外部调用者则可以获取到这个值,并且在后续继续恢复执行序列生成器来获取下一个值。

显然,挂起和向外部传值的任务就需要通过 co_await 来完成了,外部获取值的任务就要通过协程的返回值来完成。

由此我们大致能想到最终程序的样子:

12345678910111213Generator sequence() { int i = 0; while (true) { co_await i++; }}int main() { auto generator = sequence(); for (int i = 0; i < 10; ++i) { std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3