微软并行编程类库Parallel Extensions介绍

概述

现代计算机越来越向着多核、多处理器的方向发展。开发人员现在就可以利用这一优势,开发功能强大的应用,以适应复杂的算法以及大量的数据运算。

并行扩展使开发人员能够轻松编写出充分利用硬件并行能力的程序,程序性能可以随着处理器或核的数量增加而提高,并且无需应对目前愈发复杂的并发编程模型。

Microsoft Parallel Extensions to the .NET Framework 3.5是一个托管编程模型,支持数据并行处理,任务并行处理,并通过一个通用的工作调度器统一协调并行运行的硬件。安装“Microsoft Parallel Extensions to the .NET Framework 3.5”后会注册一个System.Threading.dll程序集到GAC中,调用前需要引用“using System.Threading.Tasks;”。Parallel Extensions主要由两部分组成:Task Parallel Library(TPL)和Parallel LINQ (PLINQ)。并行扩展使得我们可以利用Task Parallel Library(TPL)实现任务的并行化,Parallel LINQ使开发人员可以以声明的方式来处理数据的并行化。

简单调用


定义三个任务:

private void Task1()
{
Thread.Sleep(1000);
}
private void Task2()
{
Thread.Sleep(2000);
}
private void Task3()
{
Thread.Sleep(3000);
}
并行调用这三个任务,代码如下:
Parallel.Invoke(Task1, Task2, Task3);

除此之外,还可以把所有的任务放在一个Action数据组中,再进行调用,如下代码片段,这在某些场景中会非常的有用,我们在设计阶段无需考虑最终运行时将会有多少个任务会执行:

Action[] actions = { Task1, Task2, Task3 };
Parallel.Invoke(actions);




for语句循环调用


Parallel.For(0, 10000, i =>
{
Console.WriteLine(i.ToString());
});
测试结果:
 

Foreach语句循环调用


Parallel.ForEach(li, i =>
{
Console.WriteLine(i.ToString());
});
测试结果:
 
 

总结

  • 通过屏幕输出结果可以看出,使用并行计算时,循环的时候是无序的。
  • 调用并行库的每个任务必须是独立的,不能出现任务间的相互调用。

 

Demo下载:
 
点击这里下载Demo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值