发件人/收件人:介绍

主要观点

  • C++26 将引入新的并发特性 std::execution 或 senders/receivers,2024 年 6 月该特性正式被纳入 C++26,已出现在标准工作草案中。
  • Senders/receivers 为 C++增加了表达计算、支持并发等的底层模型,可高效利用并发且保持线程安全,能在不同硬件上表达计算。
  • 虽有优势,但仍有人认为此时加入该特性是错误的,本文旨在为未接触过的人介绍此特性。
  • 通过多个示例展示了 senders/receivers 的基本用法,如简单打印、在不同线程执行代码、并发执行函数、处理批量数据等,还介绍了其形状和结构化特性。
  • P2300 提案包含操作 senders 的算法,分为发送器工厂、发送器适配器、发送器消费者三类,且标准中还将引入其他相关内容,如系统执行上下文、异步作用域、协程任务类型等。

关键信息

  • 2024 年 6 月 P2300R10 被纳入 C++26,内容进入标准工作草案。
  • Senders 可描述计算、良好组合、延迟执行,能表示并发异步工作和实现结构化并发。
  • 发送器算法分为工厂、适配器、消费者三类,各有其功能和用法。
  • 除 P2300 外,还有 P3109R0 等提案涉及系统执行上下文等内容。

重要细节

  • 发送器的完成信号有 set_value、set_error、set_stopped 三种,可支持多种类型的值或错误。
  • 发送器适配器算法有多种形式,如 then 算法的规范形式和管道形式。
  • 发送器消费者算法 sync_wait 用于提交和等待发送器工作完成。
  • 其他未纳入 P3109 的 senders/receivers 特性包括 C++并行算法等。
  • Lucian Radu Teodorescu 有相关研究和实践经验。
阅读 7
0 条评论