C#并行编程:简要

通过编程发挥多核或多处理器优势的方式称为并行编程。它是多线程这个更宽泛概念的一个子集。
多线程API和以下可以发挥多核处理器能力的各种结构:

  • 并行LINQ(PLINQ)
  • Parallel类
  • 任务并行结构
  • 并发集合

这些类型一般统称为并行框架(Parallel Framework,PFX)。
Parallel类和任务并行结构统称为任务并行库(Task parallel Library,TPL)。

PFX

PFX概念

在线程间划分工作的策略有两种:数据并行任务并行
当一组任务需要处理很多的数据值时,我们可以令每一个线程以相同的方式处理一部分数据值,这称为数据并行,即将数据在线程间进行了划分。
相对地,任务并行则是划分任务,即每一个线程处理不同的任务。

PFX组件

PFX包含两层功能,上层结构由两种结构化数据并行API组成:PLINQ和Parallel类下层结构则由任务并行类和辅助并行编程活动的结构组成。
image

PLINQ提供了丰富的功能:它能够自动完成并行工作,包括将工作划分成任务,在线程上执行任务,以及将结果整理为一个输出序列。它是声明式的,因为只要使用LINQ查询声明需要并行化的工作,然后让框架去处理实现细节即可。与声明式相对的形式是命令式(imperative),需要显式进行编码来执行划分和整理工作。

如下表所示:若使用Parallel类,则必须自行进行整理工作;若使用任务并行结构,还必须自行完成任务划分的工作。

划分工作 整理工作
PLINQ
Parallel类
PFX任务并行

PFX主要用于并行编程,即利用多核处理器来加速计算密集型代码的执行速度。

posted @ 2022-09-01 16:10  一纸年华  阅读(325)  评论(0编辑  收藏  举报