并发运行时

适用于 C++ 的并发运行时可帮助你编写可靠、可伸缩且响应迅速的并行应用程序。 它提升了抽象级别,因此无需管理与并发相关的基础结构详细信息。 你还可以使用它来指定符合应用程序服务要求质量的计划策略。 使用这些资源帮助你开始使用并发运行时。

有关参考文档,请参阅参考

提示

并发运行时十分依赖 C++11 功能,并采用更现代的 C++ 样式。 若要了解详细信息,请阅读欢迎回到 C++

选择并发运行时功能

项目 说明
概述 讲解并发运行时之所以重要的原因并介绍它的主要功能。
与其他并发模型进行比较 演示并发运行时如何与其他并发模型(例如 Windows 线程池和 OpenMP)进行比较,以便你能够使用最适合你应用程序需求的并发模型。
从 OpenMP 迁移至并发运行时 将 OpenMP 与并发运行时进行比较,并提供有关如何迁移现有 OpenMP 代码以使用并发运行时的示例。
并行模式库 (PPL) 向你介绍 PPL,它提供并行循环、任务和并行容器。
异步代理库 向你介绍如何使用异步代理和消息传递来轻松地将数据流和流水线操作任务合并到应用程序中。
任务计划程序 向你介绍任务计划程序,它使你能够微调使用并发运行时的桌面应用的性能。

PPL 中的任务并行度

文章 说明
任务并行

如何:使用 parallel_invoke 来编写并行排序例程

如何:使用 parallel_invoke 来执行并行操作

如何:创建在延迟一段时间后完成的任务
介绍任务和任务组,它们可帮助你编写异步代码并将并行工作分解为较小的部分。
演练:实现 Future 演示如何组合使用并发运行时功能来完成更多任务。
演练:从用户界面线程中删除工作 演示如何将由 MFC 应用程序中的 UI 线程执行的工作移到工作线程中。
并行模式库中的最佳做法

并发运行时中的常规最佳做法
提供使用 PPL 的提示和最佳做法。

PPL 中的数据并行度

项目 说明
并行算法

如何:编写 parallel_for 循环

如何:编写 parallel_for_each 循环

如何:并行执行映射和减少操作
介绍 parallel_forparallel_for_eachparallel_invoke和其他并行算法。 使用并行算法来解决涉及数据集合的 数据并行 问题。
并行容器和对象

如何:使用并行容器提高效率

如何:使用 combinable 提高性能

如何:使用 combinable 来组合集
介绍 combinable 类,以及 concurrent_vectorconcurrent_queueconcurrent_unordered_map和其他并行容器。 当你需要提供对其元素的线程安全访问的容器时,请使用并行容器和对象。
并行模式库中的最佳做法

并发运行时中的常规最佳做法
提供使用 PPL 的提示和最佳做法。

取消任务和并行算法

项目 说明
PPL 中的取消操作 介绍 PPL 中取消操作的角色,包括如何启动和相应取消请求。
如何:使用取消来中断并行循环

如何:使用异常处理来中断并行循环
演示取消数据并行工作的两种方法。

通用 Windows 平台应用

项目 说明
用 C++ 为 UWP 应用创建异步操作 介绍在 UWP 应用中使用并发运行时生成异步操作时要记住的一些重点。
演练:使用任务和 XML HTTP 请求进行连接 演示如何将 PPL 任务和 IXMLHTTPRequest2 以及 IXMLHTTPRequest2Callback 接口结合使用,以在 UWP 应用中将 HTTP GET 和 POST 请求发送到 Web 服务。
Windows 运行时应用示例 包含 Windows 运行时的可下载代码示例和演示应用。

异步代理库中的数据流编程

文章 说明
异步代理

异步消息块

消息传递函数

如何:实现各种制造者-使用者模式

如何:为 call 和 transformer 类提供工作函数

如何:在数据管道中使用转换器

如何:在已完成的任务之间选择

如何:定期发送消息

如何:使用消息块筛选器
介绍异步代理、消息块和消息传递函数,它们是在并发运行时中执行数据流操作的构建基块。
演练:创建基于代理的应用程序

演练:创建数据流代理
演示如何创建基本的基于代理的应用程序。
演练:创建图像处理网络 演示如何创建执行图像处理的异步消息块网络。
演练:使用 join 避免死锁 通过哲学家就餐问题说明如何使用并发运行时来避免应用程序中发生死锁。
演练:创建自定义消息块 演示如何创建根据优先级对传入消息进行排序的自定义消息块类型。
异步代理库中的最佳做法

并发运行时中的常规最佳做法
提供使用代理的提示和最佳做法。

异常处理和调试

文章 说明
异常处理 介绍如何处理并发运行时中的异常。
并行诊断工具 讲解如何微调应用程序以及最有效地利用并发运行时。

调整性能

项目 说明
并行诊断工具 讲解如何微调应用程序以及最有效地利用并发运行时。
计划程序实例

如何:管理计划程序实例

计划程序策略

如何:指定特定的计划程序策略

如何:创建使用特定计划程序策略的代理
演示如何使用管理计划程序实例和计划程序策略。 对于桌面应用,计划程序策略使你能够将特定规则与特定工作负载类型关联。 例如,你可以创建一个计划程序实例来以提升的线程优先级运行一些任务,并使用默认计划程序以普通线程优先级运行其他任务。
计划组

如何:使用计划组影响执行顺序
演示如何使用计划组来关联相关任务或将它们组合到一起。 例如,当相关任务从在同一处理器节点上执行中获益时,你可能需要这些任务具有高度的局域性。
轻量级任务 说明轻量级任务如何有助于创建不需要负载平衡或取消的工作,以及它们如何有助于调整现有代码以便与并发运行时一起使用。
上下文

如何:使用上下文类实现协作信号量

如何:使用过度订阅偏移延迟
介绍如何控制由并发运行时管理的线程的行为。
内存管理函数

如何:使用 Alloc 和 Free 提高内存性能
介绍并发运行时提供的内存管理函数,可帮助你以并发方式分配和释放内存。

其他资源

项目 说明
Hilo(使用 C++ 和 XAML 的 Windows 应用商店应用)中的异步编程模式和提示 了解我们如何使用并发运行时在 Hilo(一个使用 C++ 和 XAML 的 Windows 运行时应用)中实现异步操作。
本机代码中的并行编程博客 提供有关并发运行时中的并行编程的其他深度博客文章。
C++ 和本机代码中的并行计算论坛 使你能够参与关于并发运行时的社区讨论。
并行编程 讲解关于 .NET Framework 中可用的并行编程模型的内容。

另请参阅

引用