0. 前言
大约 2 分钟
0. 前言
C++ 20 标准发布之后,协程终于正式成为 C++ 特性当中的一员。
作为一门本身极其复杂的语言,C++ 秉承着不劝退不开心的原则,将协程的 API 设计得非常复杂。以至于有开发者甚至发出了“这玩意根本就不是给人用的”这样的感叹。
等等,我们是不是搞错了,C++ 协程的 API 确实不是设计给业务开发者直接使用的。实际上,标准当中给出的 API 足够的灵活,也足够的基础,框架的开发者可以基于这些 API 将过去异步的函数改造成协程风格的版本。
没错,这就是 C++。
一门不造轮子就让人不舒服的语言,它总是在用它自己的方式逼着开发者进步。为了帮助大家认识和了解 C++ 协程的设计思路以及基本用法,我计划写几篇文章来介绍一下 C++ 协程的相关特性。
本人 C++ 水平有限,文章内容的安排将尽可能以介绍特性为主,涉及到的框架实现不建议在生产环境当中直接使用。
另外,为了方便读者阅读和实验,文章涉及到的所有源码均已上传于 GitHub: bennyhuo/CppCoroutines。
相信大家读完这一系列文章之后,也还是不一定会 C++ 协程 :)
说明:C++ 23 有望基于协程提供不少有用的支持,例如与异步任务密不可分的 executor、network 等等,不过这些内容我暂时不会在后面的文章当中涉及,等 C++ 23 正式发布之后再做补充。
关于作者
霍丙乾 bennyhuo,Google 开发者专家(Kotlin 方向);《深入理解 Kotlin 协程》 作者(机械工业出版社,2020.6);《深入实践 Kotlin 元编程》 作者(机械工业出版社,2023.8);移动客户端工程师,先后就职于腾讯地图、猿辅导、腾讯视频。
- GitHub:https://github.com/bennyhuo
- 博客:https://www.bennyhuo.com
- bilibili:霍丙乾 bennyhuo
- 微信公众号:霍丙乾 bennyhuo