期中周|扩展现有协程框架,实现高级任务调度
卢誉声
你好,我是卢誉声。
时间过得真快,从 1 月 16 日上线到现在,我们的学习之旅已经走过了将近 1 个月,不知道你的收获如何呢?
之前我说过,如何在实际工程项目中通过 C++20 的新特性解决问题,将是我们学习的重点。从我的经验看,想要从初步了解到熟练应用这些新特性,也确实需要多花些功夫,而且不光要多看,更要多练,这样才能形成“手感”。
所以,我特意安排了这次期中周。从 2 月 13 日开始到 2 月 19 日结束,这期间我们会暂停更新正文内容,你可以好好利用这一周的时间,回顾一下前面学过的知识,查漏补缺。
在实际工作里,新的挑战通常是我们学习锻炼的良机。所以,期中周我还给你准备了一道测试题,一起来挑战一下吧!
C++ Coroutines 是 C++20 标准带来的最令人兴奋和激动的全新核心语言特性之一。课程第七讲至第十讲,用了不少篇幅详细讲解 C++ Coroutines。不过,正如我们所见的,C++20 中提供的协程仅提供了语言层面的支持,缺乏标准库的支持。因此,在标准得到进一步演化之前,我们不得不实现绝大多数接口约定。
这让我们使用 C++ Coroutines 的成本提高了。我在课程中已经给出了基于接口约定的实战案例。但是,这个案例还有不少可以提升的空间。请你在现有代码的基础上,尝试实现后面的功能。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
C++20标准带来了令人兴奋的全新核心语言特性之一——C++ Coroutines。本文介绍了期中测试题的安排和C++ Coroutines的重要性,以及对于实际工程项目中使用C++20新特性解决问题的重点。作者强调了在实际工作中面对新挑战是学习的良机,并提到了C++ Coroutines的实际应用和实战案例。此外,文章还提到了C++ Coroutines的成本和实现的空间,以及对读者的挑战:在现有代码的基础上,尝试实现更多功能。具体来说,读者需要在Windows上使用CMake编译提供的asyncpp代码,并实现一个更智能的任务分发机制来处理耗时任务,包括使用专有线程和线程优先级来处理特殊情况。最后,作者提供了开发环境和工具的建议,并期待读者的作业。整体而言,本文强调了C++ Coroutines的重要性和实际应用,并为读者提供了实践的机会和挑战。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《现代 C++20 实战高手课》,新⼈⾸单¥59
《现代 C++20 实战高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 李云龙由于不能上传图片,我就描述一下我的思路:我在老师的代码基础上增加了一个Awaitable类型,用于专门处理有优先级的任务。同样地,我也增加了一个处理高优先级任务的任务队列、一个专门处理高优先级任务的任务循环的异步线程。需要高优先级任务处理的任务首先需要使用AsyncifyPriority转换为新增的AwaitablePriority类型,这个类型中使用一个可以处理任务优先级的suspender函数,将高优先级任务插入到高优先级任务队列中,将其他优先级任务插入到原有的任务队列中,并将协程唤醒的函数对象都放入主线程的任务队列中。 具体的代码请查阅:https://gitee.com/devin21/midTermAssignment/tree/master/ 欢迎大家批评指正。
作者回复: 基本思路是没有问题的,核心就是另加一个高优先级的任务异步循环线程,然后把任务分派到这个线程
2024-01-05归属地:北京1 - peter准备搭建环境试试编译代码: Q1:老师给出的链接中,VS22有三个版本:community、Professional、Enterprise。Community估计是最低版本了,能满足需要吗? Q2:VS22自身没有CMake吗?如果有,为什么老师又提供了一个CMake的链接?(需要下载此CMake,然后安装到VS22吗?) Q3:记得有VS2015,盗版的,不记得放在哪里了,也许可以找到。VS2015或VS2018可以吗?
作者回复: Q1:满足需求。 Q2:安装时可勾选安装 CMake。 Q3:需要 Visual Studio 2022 及其包含的 Visual C++以支持最新的C++标准。
2023-02-13归属地:北京
收起评论