讲师中心 微信公众号
AI工具推荐 视频效率加速

c++ c++26 aot aot aot c++标准库的std::execution如何使用

冬伟酱_7517

冬伟酱_7517

发布时间:2026-03-19 21:32:03

|

512人浏览过

|

来源于php中文网

原创

std::execution 在 C++26 中并不存在,它仅是 C++17 引入的并行算法执行策略(如 seq、par、par_unseq),不提供执行器或调度器抽象,所有所谓“C++26 新特性”均属误传。

c++ c++26 aot aot aot c++标准库的std::execution如何使用

std::execution 在 C++26 中还不存在

它根本没进标准。C++23 是当前最新正式标准,C++26 尚在草案阶段(ISO/IEC PDTS 23979),而 std::execution 这个命名空间——连同 std::execution::par、std::execution::seq 等执行策略——早在 C++17 就已存在,但仅作为 std::for_each、std::sort 等并行算法的参数类型,不提供独立调度或执行器抽象。

常见错误现象:std::execution::task_block 或 std::execution::executor 编译失败;搜索“C++26 execution”后误以为新特性已落地,结果发现头文件不识别、文档链接 404。

  • C++17 引入的是 std::execution::sequenced_policy 等策略类型,不是运行时执行器
  • C++23 没新增执行模型,只微调了并行算法约束和异常传播行为
  • PDTS 23979(C++26 草案)里确实提到了 “execution primitives”,但全是提案编号(如 P2300R7 的 std::execution 重构),未合并进标准正文
  • 所有主流编译器(GCC 14、Clang 18、MSVC 19.39)均不支持所谓“C++26 std::execution”新接口

现在能用的 std::execution::xx 都是 C++17 并行策略

它们只是枚举式标签,告诉算法“你允许怎么并发”,不启动线程、不管理队列、不处理依赖。真正干活的是标准库实现(比如 libstdc++ 用 pthread / TBB,libc++ 用 Intel TBB 或自研线程池)。

使用场景:加速已知可并行的 CPU 密集型操作,比如大数组排序、向量归约、图像像素遍历。

立即学习“C++免费学习笔记(深入)”;

  • std::execution::seq:强制顺序执行(单线程,无开销)
  • std::execution::par:允许任意并发(可能用多线程,也可能退化为 seq)
  • std::execution::par_unseq:允许并发 + 向量化(SIMD,对数据布局敏感)
  • 必须显式传给算法,如 std::sort(std::execution::par, first, last, comp);不传就是顺序版

性能影响:用 par 不一定更快——小容器、廉价比较函数、缓存不友好访问模式下,线程启动/同步开销反而拖慢;建议先测 seq 基线,再比 par。

C++14
C++14

C++14 对 C++11 的修正与增强版本,适合旧系统维护和较老工具链兼容。

下载

想写 AOT 友好的并行代码?别碰 std::execution 策略

AOT(Ahead-of-Time)编译环境(如嵌入式、iOS、某些游戏引擎构建链)通常禁用动态线程创建、限制 STL 的并发实现。而 std::execution::par 的行为高度依赖运行时线程池,libstdc++ 默认用 std::thread,libc++ 依赖外部 TBB —— 这些在 AOT 场景下往往不可控或被裁剪。

容易踩的坑:

  • 静态链接时漏掉 TBB 库 → 运行时报 undefined symbol: _ZNSt3__119__tbb_backend_impl14__execute_taskEPv
  • iOS 构建开启 -D_GLIBCXX_PARALLEL → 直接编译失败(Apple Clang 不支持)
  • 裸机或 freestanding 环境包含 <execution> → 头文件存在但策略对象定义为空,链接时报错
  • 用 par_unseq 但数据未按 32 字节对齐 → SIMD 指令触发 SIGBUS

替代做法:显式用 std::thread + std::vector<std::thread> 分块,或选轻量级并行库(如 OpenMP 的 #pragma omp parallel for,AOT 兼容性好得多)。

std::execution 相关提案(P2300)和现实差距很大

P2300(“std::execution” 重构)想把执行器、发送器、接收器做成一等公民,类似 Rust 的 Executor 或 Swift 的 Task,但它仍处于 TS(Technical Specification)讨论阶段,连 C++26 的 feature testing macro(__cpp_lib_execution)都未启用。

现状:

  • 没有 std::execution::executor 类型
  • 没有 std::execution::schedule() 函数
  • 没有 sender/receiver 概念进入标准库头文件
  • 所有实验性实现(如 LLVM 的 libcxx 的 experimental/executors)都带 experimental:: 前缀,且 ABI 不稳定

如果你看到博客写“C++26 使用 std::execution::schedule() 启动异步任务”,那要么是混淆了提案编号,要么在跑非标准分支。真要跨平台 AOT + 异步,目前更靠谱的是自己封装 std::jthread 或用 Boost.Asio 的 thread_pool。

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

c++

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

797

2026.03.03

Swift编程与iOS/macOS应用开发教程合集
Swift编程与iOS/macOS应用开发教程合集

面向苹果生态开发者,系统讲解 Swift 语言核心与 iOS/macOS 应用开发,涵盖 Swift 语法基础、Xcode 开发环境搭建与项目管理、SwiftUI 声明式 UI 开发、UIKit 与 SwiftUI 混合开发策略、Combine 响应式编程框架、数据持久化(SwiftData/Core Data/UserDefaults)、网络请求与 JSON 解析、App 签名/打包/TestFlight 测试与 App Store

1142

2026.06.03

C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全

C++系统编程中的内存管理是指 对程序运行时内存的申请、使用和释放进行精细控制的机制,涵盖了栈、堆、静态区等不同区域,开发者需要通过new/delete、智能指针或内存池等方式管理动态内存,以避免内存泄漏、野指针等问题,确保程序高效稳定运行。它核心在于开发者对低层内存有完全控制权,带来灵活性,但也伴随高责任,是C++性能优化的关键。

86

2025.12.22

Rust异步编程与Tokio运行时实战
Rust异步编程与Tokio运行时实战

本专题聚焦 Rust 语言的异步编程模型,深入讲解 async/await 机制与 Tokio 运行时的核心原理。内容包括异步任务调度、Future 执行模型、并发安全、网络 IO 编程以及高并发场景下的性能优化。通过实战示例,帮助开发者使用 Rust 构建高性能、低延迟的后端服务与网络应用。

258

2026.02.11

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

602

2026.03.05

Rust 系统编程入门与实战
Rust 系统编程入门与实战

统讲解近年最受关注的系统级编程语言 Rust 的核心知识体系,涵盖 Rust 的安装与 Cargo 项目管理、变量绑定与不可变性设计哲学、所有权(Ownership)/ 借用(Borrowing)/ 生命周期(Lifetime)三大核心概念、结构体/枚举与模式匹配(match)、Trait 特征系统与泛型编程、错误处理(Result/Option)、智能指针(Box/Rc/Arc)、并发编程的无畏并发(Fearless Concurre

477

2026.05.29

Rust异步网络服务与Tokio Runtime深度实践
Rust异步网络服务与Tokio Runtime深度实践

本专题围绕 Rust 在高并发网络服务中的应用展开,系统讲解 Tokio 异步运行时、任务调度模型、Future 执行机制以及高性能网络编程方式。结合实际服务端案例,帮助开发者构建低延迟、高可靠的异步服务架构。

256

2026.06.29

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

1138

2023.09.04

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

40

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

C++ 官方标准说明
C++ 官方标准说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn