Skip to content
Benny Huo 的专栏Benny Huo 的专栏
  • 专栏首页
    • 大会视频回放
      • 慕课视频课程
          • 0. 前言
            • 关于作者
            • 1. C++ 协程概览
              • 2. 实现一个序列生成器
                • 3. 序列生成器的泛化和函数式变换
                  • 4. 通用异步任务 Task
                    • 5. 协程的调度器
                      • 6. 基于协程的挂起实现无阻塞的 sleep
                        • 7. 用于协程之间消息传递的 Channel
                          • 8. 通用 Awaiter
                            • 9. 一个简单的示例
                              • 10. 后记

                              0. 前言

                              author iconBenny Huocalendar icon2022年3月28日timer icon大约 2 分钟

                              此页内容
                              • 关于作者

                              # 0. 前言

                              C++ 20 标准发布之后,协程终于正式成为 C++ 特性当中的一员。

                              作为一门本身极其复杂的语言,C++ 秉承着不劝退不开心的原则,将协程的 API 设计得非常复杂。以至于有开发者甚至发出了“这玩意根本就不是给人用的”这样的感叹。

                              等等,我们是不是搞错了,C++ 协程的 API 确实不是设计给业务开发者直接使用的。实际上,标准当中给出的 API 足够的灵活,也足够的基础,框架的开发者可以基于这些 API 将过去异步的函数改造成协程风格的版本。

                              没错,这就是 C++。

                              一门不造轮子就让人不舒服的语言,它总是在用它自己的方式逼着开发者进步。为了帮助大家认识和了解 C++ 协程的设计思路以及基本用法,我计划写几篇文章来介绍一下 C++ 协程的相关特性。

                              本人 C++ 水平有限,文章内容的安排将尽可能以介绍特性为主,涉及到的框架实现不建议在生产环境当中直接使用。

                              另外,为了方便读者阅读和实验,文章涉及到的所有源码均已上传于 GitHub: bennyhuo/CppCoroutinesopen in new window。

                              相信大家读完这一系列文章之后,也还是不一定会 C++ 协程 :)

                              说明:C++ 23 有望基于协程提供不少有用的支持,例如与异步任务密不可分的 executor、network 等等,不过这些内容我暂时不会在后面的文章当中涉及,等 C++ 23 正式发布之后再做补充。

                              # 关于作者

                              霍丙乾 bennyhuo,Kotlin 布道师,Google 认证 Kotlin 开发专家(Kotlin GDE);《深入理解 Kotlin 协程》 作者(机械工业出版社,2020.6);前腾讯高级工程师,现就职于猿辅导

                              • GitHub:https://github.com/bennyhuo
                              • 博客:https://www.bennyhuo.com
                              • bilibili:bennyhuo不是算命的open in new window
                              • 微信公众号:bennyhuo
                              上次编辑于: 2022/3/30 20:53:04
                              贡献者: bennyhuo
                              下一页
                              1. C++ 协程概览
                              bennyhuo@2018-2022