14.1 理解不同的并行技术

本文介绍了.NET的并行扩展,一种并行编程库,包括任务并行库(TPL)和并行LINQ(PLINQ)。TPL支持并行执行任务的基础结构,而PLINQ则用于编写数据并行代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

14.1 理解不同的并行技术



    在这一节中,我们会讨论三种技术,并使用简单的示例来演示。我们将使用 .NET 的并行扩展(Parallel Extensions to .NET),这是一个并行编程库。它是 .NET Framework 4.0 标准的一部分,但是,不幸的是,在早期 .NET 的版本中是不可用的。如果要使用 Visual Studio 2008,体验并行扩展,你可以下载 CTP 版本,但有几个命名的改变(实际上,Visual Studio 2010 应该没有这个问题了。)。





.NET 的并行扩展(Parallel Extensions to .NET)



    这个库包括两个主要部分组成,我们在这一章中会用到。

    ■ 任务并行库 (Task Parallel Library,TPL),包括基础结构,可以并行执行的任务(基本工作单元,primitive units of work)。TPL的另一个组件允许创建常见计算任务,比如 for 循环。

    ■ 并行 LINQ (Parallel LINQ,PLINQ),可以用于写数据并行代码。这是处理大量的数据的代码,使用相同的算法。

    用于并行执行任务的底层技术,以完全托管的代码实现,使用了源自微软研究院(MSR)的先进技术。它使用动态工作分配,即,任务分为到工作线程之间,取决于线程的可用性。一旦线程完成分配给自己的任务,就可以从其他线程中启动"窃取(stealing)"任务,所以,工作将均匀分布在所有可用的处理器或核心之间。任务存储在队列中的每个工作线程,这也大大降低所需的同步和锁定的实现。



    让我们从在介绍中提到的特定技术:对使用数组的命令式代码进行并行化开始,这与不允许有任何副作用的纯函数式语言不相关,但正如我们在第 10 章所看到的,以函数风格使用数组,在 C# 和 F# 中是很有用的技术,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值