(转)一个托管编程模型,支持数据并行处理,任务并行处理,并通过一个通用的工作调度器统一协调并行运行的硬件。
并行扩展使开发人员能够轻松编写出充分利用硬件并行能力的程序,程序性能可以随着处理器或核的数量增加而提高,并且无需应对目前愈发复杂的并发编程模型。
实验:
VS2008+.NET Framework 3.5
双击ParallelExtensions_Jun08CTP.msi进行安装
项目-添加引用-浏览-C:\Program Files\Microsoft Parallel Extensions Jun08 CTP\System.Threading.dll。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication_TPL
{
class Program
{
static void Main(string[] args)
{
Program a = new Program();
Action[] actions = { a.task1, a.task2, a.task3 };
Console.WriteLine("Parallel process...");
Parallel.Invoke(actions);
Console.WriteLine("Serial process...");
a.task1();
a.task2();
a.task3();
}
private void task1()
{
Thread.Sleep(1000);
Console.WriteLine("Task1 Complete @ "+DateTime.Now.Hour.ToString()+":"+DateTime.Now.Minute.ToString()+";"+DateTime.Now.Second.ToString());
}
private void task2()
{
Thread.Sleep(2000);
Console.WriteLine("Task2 Complete @ " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ";" + DateTime.Now.Second.ToString());
}
private void task3()
{
Thread.Sleep(3000);
Console.WriteLine("Task3 Complete @ " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ";" + DateTime.Now.Second.ToString());
}
}
}
运行结果:
并行扩展使开发人员能够轻松编写出充分利用硬件并行能力的程序,程序性能可以随着处理器或核的数量增加而提高,并且无需应对目前愈发复杂的并发编程模型。
实验:
VS2008+.NET Framework 3.5
双击ParallelExtensions_Jun08CTP.msi进行安装
项目-添加引用-浏览-C:\Program Files\Microsoft Parallel Extensions Jun08 CTP\System.Threading.dll。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication_TPL
{
class Program
{
static void Main(string[] args)
{
Program a = new Program();
Action[] actions = { a.task1, a.task2, a.task3 };
Console.WriteLine("Parallel process...");
Parallel.Invoke(actions);
Console.WriteLine("Serial process...");
a.task1();
a.task2();
a.task3();
}
private void task1()
{
Thread.Sleep(1000);
Console.WriteLine("Task1 Complete @ "+DateTime.Now.Hour.ToString()+":"+DateTime.Now.Minute.ToString()+";"+DateTime.Now.Second.ToString());
}
private void task2()
{
Thread.Sleep(2000);
Console.WriteLine("Task2 Complete @ " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ";" + DateTime.Now.Second.ToString());
}
private void task3()
{
Thread.Sleep(3000);
Console.WriteLine("Task3 Complete @ " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ";" + DateTime.Now.Second.ToString());
}
}
}
运行结果:
浙公网安备 33010602011771号