当前位置:首页 > 每日看点 > 正文内容

CPP26的exec模型你认为设计的如何?

卡卷网7个月前 (03-05)每日看点109

我觉得非常好。我第一时间能想到的有以下几个方面:

1、统一的异步模型,thread pool、GPU等这种资源调度以后都有了统一的调度接口,第三方库之间相互集成也变得更加方便。不仅仅是抽象出了scheduler/sender/receiver之类的接口,还封装了一些常用的异步算法,像when_all之类的,大大简化了异步代码的编写。

以前老有人问为什么STL中没有thread pool,其实只要就是因为C++还没有统一的异步模型,即使想要提供thread pool也没法确定需要提供什么样的api接口。现在不一样了,哪怕第三方的各种thread pool也可以轻松按照execution的模型来适配,stdexec里面就适配了好几个thread pool,包括tbb、asio等等:

CPP26的exec模型你认为设计的如何?  第1张

链接:

github.com/NVIDIA/stdex

2、协程和传统异步的高度统一,两种调用方式给你选择。协程方式主要是代码编写简单、可读性好,sender方式主要是可移植性更强,且性能更高。execution中的sender很容易就能支持co_await。

stdexec的文档中的这个例子:

CPP26的exec模型你认为设计的如何?  第2张

我把它协程,就变成这样:

#include <stdexec/execution.hpp> #include <exec/static_thread_pool.hpp> #include <exec/task.hpp> #include <print> exec::task<std::tuple<int, int, int>> Work(auto& scheduler) { auto fun = [](int i) { return i*i; }; auto work = stdexec::when_all( stdexec::on(scheduler, stdexec::just(0) | stdexec::then(fun)), stdexec::on(scheduler, stdexec::just(1) | stdexec::then(fun)), stdexec::on(scheduler, stdexec::just(2) | stdexec::then(fun)) ); co_return co_await work; } int main() { exec::static_thread_pool pool(3); auto scheduler = pool.get_scheduler(); auto work = Work(scheduler); auto [tp] = stdexec::sync_wait(std::move(work)).value(); // expect(tp == std::tuple<int, int, int>(0, 1, 4)); }

3、应用structured concurrency思想,并将其推向新的高度。作为asio的粉丝,我觉得asio输得不冤。asio::co_spawn是不符合structured concurrency思想的:

CPP26的exec模型你认为设计的如何?  第3张

youtube上有好几个关于Structured Concurrency思想的不错的视频,如果你只想看一个,我推荐这个:

youtube.com/watch?

90年代C++凭借STL+上百种算法取得了非常强大的竞争力。C++26的execution就是并行并发编程时代的STL,在所有编程语言里面继续领先,甚至遥遥领先。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/03/11638.html

分享给朋友:

相关文章

200+ 工具,这个网站堪称最强

200+ 工具,这个网站堪称最强

作为一个乱七八糟什么都懂一点的电脑小白,日常经常被别人增加些临时任务,比如PDF转Word,提取视频里的音频,图片加个边框。之前,电脑里安装了不少这类的软件,虽然能满足要求,但装的多了,总感觉电脑卡卡的。最近发现了一个超强的在线工具网站,首...

那些极速版软件其存在目的是什么?

那些极速版软件其存在目的是什么?

我看了很多回答,其实都没有回答道点子上。你知道极速版APP为什么叫极速版吗?是他看视频更快吗?显然不是。只是它的安装包体积更小,下载安装速度更快而已,所以叫极速版app。当然啦,现在极速版APP和原声版APP,安装包已经没有区别了,这是因为...

B 站上有哪些很好的学习资源?

B 站上有哪些很好的学习资源?

前!方!高!能!精选了多位学习Up主,不乏百万粉丝的大V,还有超多珍贵的学习资源推荐。进了小破站,完全不用担心学完了该怎么办?因为根本学不完啊!!!B站的学习干货实在太多了!语言学习葉子先生酱https://space.bilibili.c...

鸿蒙到底是不是安卓套壳?

鸿蒙到底是不是安卓套壳?

把它是不是套壳先放在一边吧。我讲一个事情,大家自己判断。华为有一个应用,叫手机管家。这个手机管家对一些系统底层设置有影响:比如华为从 EMUI 9 开始不允许将第三方启动器设置为默认启动器,依靠的就是这个手机管家。为什么这么说呢?在网上搜索...

什么样的网站能快速捕获你的心?

什么样的网站能快速捕获你的心?

大家好,我是程序员鱼皮。大家如果平时使用网站或产品时出现了问题,一般都会去寻找 “联系客服” 的位置,从而获得人工的帮助。我们团队的面试刷题产品 - 面试鸭最近就遇到了这样一个难题:明明我们网站右下角就有联系客服按钮、而且我们每道面试题目下...

常微分方程的理论对偏微分方程的研究有没有帮助?

常微分方程的理论对偏微分方程的研究有没有帮助?

之前看到过一句话,好像是 Bourgain 说的,大意是做 ode 的做到深处就到了 pde,做 pde 的做到深处就到了 ode,ode 和 pde 最后是相通的。以我目前有限的知识,只知道下面两个方向:1. Hamilton 系统在现代...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。