Welcome

首页 / 软件开发 / C# / 精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel)

精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel)2012-05-30 博客园 webabcd介绍

C# 4.0 的新特性之并行运算

* Parallel.For - for 循环的并行运算

* Parallel.ForEach - foreach 循环的并行运算

* Parallel.Invoke - 并行调用多个任务

* Task - 任务,基于线程池。其使我们对并行编程变得更简单,且不用关心底层是怎么实现的

* PLINQ - 用于对内存中的数据做并行运算,也就是说其只支持 LINQ to Object 的并行运算

示例

1、Parallel.For 的 Demo

Parallel/ParallelFor.aspx.cs

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CSharp.Parallel
{
public partial class ParallelFor : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Normal();
ParallelForDemo();
}
private void Normal()
{
DateTime dt = DateTime.Now;
for (int i = 0; i < 20; i++)
{
GetData(i);
}
Response.Write((DateTime.Now - dt).TotalMilliseconds.ToString());
Response.Write("<br />");
Response.Write("<br />");
}
private void ParallelForDemo()
{
DateTime dt = DateTime.Now;
// System.Threading.Tasks.Parallel.For - for 循环的并行运算
System.Threading.Tasks.Parallel.For(0, 20, (i) => { GetData(i); });
Response.Write((DateTime.Now - dt).TotalMilliseconds.ToString());
Response.Write("<br />");
}
private int GetData(int i)
{
System.Threading.Thread.Sleep(100);
Response.Write(i.ToString());
Response.Write("<br />");
return i;
}
}
}
/*
运行结果:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2000.0514
0
13
1
19
7
12
18
6
2
8
10
14
4
16
5
3
15
17
9
11
300.0077
*/