C++26 不引入 std::execution 且不将 Sender/Receiver 模型纳入标准库;并行算法仍使用 C++17 的 std::execution::seq/par/par_unseq 策略,Sender/Receiver 仅作为 TS 候选推迟至 C++29 或更晚。

C++26 不会引入 std::execution,也不会把 Sender/Receiver 模型塞进标准库的并行算法中——这个模型已被明确移出 C++26 工作计划。
std::execution 这个名字在标准草案中曾短暂出现过(C++20 后期、C++23 早期),但最终被弃用;它从未进入任何正式标准版本。你查不到它的文档,也链接不到它的头文件,因为根本不存在。
Sender/Receiver 没进 C++26 标准库
Sender/Receiver 是为异步计算建模的一套原语,目标是替代 std::future 和补全协程生态,不是专为 std::for_each 这类并行算法设计的。
- C++26 的并行算法仍基于
std::execution::par/std::execution::par_unseq等执行策略(来自和) - Sender/Receiver 目前仅作为独立的技术规范(P2300R7)推进,状态是「TS 候选」,但未被纳入 C++26 CD(Committee Draft)
- ISO C++ 会议已决定将其推迟到 C++29 或更晚——主要障碍是实现成熟度不足、与现有并发设施(如
std::jthread、std::stop_token)整合路径不清晰
你现在能用的并行执行策略仍是 C++17 定义的那一套
所有带 ExecutionPolicy 参数的算法(如 std::sort、std::transform)在 C++26 中行为不变,底层依赖的是实现提供的线程池或 OS 级并行支持:
立即学习“C++免费学习笔记(深入)”;
#include#include #include std::vector
v = {/ ... /}; std::sort(std::execution::par, v.begin(), v.end()); // 依然有效,且语义没变
-
std::execution::seq:顺序执行(默认) -
std::execution::par:允许跨线程并行,但保持数据依赖顺序 -
std::execution::par_unseq:允许向量化 + 跨线程并行,对用户代码有严格要求(不可含原子操作、锁、I/O 等) - 没有
std::execution::unseq单独存在;它只作为par_unseq的一部分起作用
想试 Sender/Receiver?得靠第三方或实验性实现
标准库不提供,但你可以通过以下方式接触实际代码:
-
libunifex(Facebook 开源):最成熟的参考实现,已用于生产级异步 I/O 框架 -
cppcoro(Lewis Baker):部分支持 Sender 概念,侧重协程集成 - MSVC 19.38+ 和 GCC 14(with
-fconcepts)能编译基础 Sender 示例,但无标准头文件,需自行引入第三方头 - 别指望
#include或std::sender——它们不存在
C++ 并发演进的真实节奏比宣传慢得多。Sender/Receiver 是重要方向,但它现在仍属于“可研究、可实验、不可依赖”的范畴。真正影响你今天写代码的,还是 std::jthread、std::atomic_ref、std::span 这些已落地的特性。











