期中周|期中测试题,你做对了么?
卢誉声
你好,我是卢誉声。
这一讲,我会把参考代码和解题思路公布出来。
答案解析
既然要在现有代码上增加功能,我们就有必要先熟悉原有架构,再决定在哪个模块或哪个层面上追加功能。
通过分析,可以发现任务的执行与调度是通过 asyncpp.task 模块实现的。同时,我们又是在为现有框架提供高优先级调度的能力。因此,新增的模块应该是供 asyncpp.task 使用的。
基于这样的考虑,我们在原有的架构基础上,追加了一个 high performance(asyncpp.hp)模块,供 asyncpp.task 模块实现高性能的线程调度。补充后的架构图是后面这样。
从图中可以看到,asyncpp.task 模块引用了 asyncpp.hp 模块。新的模块提供了高优先级线程调度和管理的能力。
我们来看一下具体实现。首先是:task 子模块。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了一道期中测试题的答案解析,题目要求基于课程里的代码扩展现有协程框架,实现高级任务调度。作者首先分析了原有架构,确定了新增模块应该是供asyncpp.task使用的。然后详细介绍了新增的高性能计算任务队列模块和任务循环模块的实现,包括使用jthread和设置线程优先级等技术。最后,作者展示了在asyncpp.task:asyncify中使用新的模块,实现了类似之前的asyncify工具,用于将一个普通的函数转换成一个返回Awaitable对象的函数。整体来看,本文涉及了C++编程中的高级任务调度和线程优先级设置等技术,对于想要深入学习C++编程的读者具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《现代 C++20 实战高手课》,新⼈⾸单¥59
《现代 C++20 实战高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- Family mission感觉asyncpp.task:asyncify 模块中36行使用单例模式构造AsyncHpTaskQueue而不是AsyncTaskQueue::getInstance(),写错了吧
作者回复: 这部分应该是没问题的, 36行是defaultAsyncAwaitableSuspend,也就是非高性能任务的业务逻辑,所以调用的是AsyncTaskQueue::getInstance 60行是hpAsyncAwaitableSuspend,也就是高性能任务的业务逻辑,所以调用的是asyncpp::hp::AsyncHpTaskQueue::getInstance
2023-12-12归属地:上海
收起评论