二、 Parallel中途退出循环和异常处理

二、 中途退出循环和异常处理
随着多核时代的到来,并行开发越来越展示出它的强大威力!使用并行程序,充分的利用系统资源,提高程序的性能 。在.net 4.0中,微软给我们提供了一个新的命名空间:..Tasks 。这里面有很多关于并行开发的东西,今天第一篇就介绍下最基础,最简单的——认识和使用 。
一、 的使用
在下面有三个常用的方法,For和 。
1、.
这是最简单,最简洁的将串行的代码并行化 。
在这里先讲一个知识点,就是的使用,最近有一些人说找不到,到底是什么东西,今天就来说明一下 。
在.命名控件,要使用它就要先引用这个命名空间 。
其使用方法如下:
10
11
var= new ();//创建一个实例
.Start();//开始计时
.Stop();//停止计时
.Reset(); //重置
.(); //重新启动被停止的
. //获取从开始到现在的时间差,单位是毫秒
本次用到的就这么多知识点,想了解更多关于的,去百度一下吧,网上有很多资料 。
下面进入整体,开始介绍.方法,废话不多说了,首先新建一个控制台程序,添加一个类,代码如下:
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class
= new ();
void Run1()
.Sleep(2000);
.("Task 1 is cost 2 sec");
void Run2()
.Sleep(3000);
.("Task 2 is cost 3 sec");
void ()
.Start();
.(Run1, Run2);
.Stop();
.(" run " + . + " ms.");
.();
Run1();
Run2();
.Stop();
.(" run " + . + " ms.");

代码很简单,首先新加一个类,在类中写了两个方法,Run1和Run2,分别等待一定时间,输出一条信息,然后写了一个测试方法,分别用两种方法调用Run1和Run2,然后在main方法中调用,下面来看一下运行时间如何:
大家应该能够猜到,正常调用的话应该是5秒多,而.方法调用用了只有3秒,也就是耗时最长的那个方法,可以看出方法是并行执行的,执行效率提高了很多 。
2、.For
这个方法和For循环的功能相似,下面就在类中添加一个方法来测试一下吧 。代码如下:
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void ()
.Start();
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 60000; j++)
int sum = 0;
sum += i;
.Stop();
.(" run " + . + " ms.");
.Reset();
.Start();
.For(0, 10000, item =>
for (int j = 0; j < 60000; j++)
int sum = 0;
sum += item;
});
.Stop();
.(" run " + . + " ms.");
写了两个循环,做了一些没有意义的事情,目的主要是为了消耗CPU时间,同理在main方法中调用,运行结果如下图:
可以看到,.For所用的时间比单纯的for快了1秒多,可见提升的性能是非常可观的 。那么,是不是.For在任何时候都比for要快呢?答案当然是“不是”,要不然微软还留着for干嘛?
下面修改一下代码,添加一个全局变量num,代码如下:
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
void ()
var obj = new ();
long num = 0;
bag = new ();
.Start();
for (int i = 0; i < 10000; i++)
for (int j = 0; j < 60000; j++)
//int sum = 0;