一、Task是任务,不是线程,但是执行的时候是需要线程;任务跟线程不是一对一的关系,比如开3个任务并不是说会开3个线程
在上一篇并行编程_Parallel文章中,反编译看了下源码Parallel.Invoke,会创建与调用的action[]数目一致的System.Threading.Tasks.Task的实例;Parallel.For、Parallel.ForEach的循环迭代的并行执行,也会创建Task实例
对于构造函数,属性,方法介绍看微软这篇msdn文档:https://msdn.microsoft.com/zh-cn/library/system.threading.tasks.task(v=vs.110).aspx
二、示例
#region 创建和执行任务
// Task.Run
Task task = Task.Run(() =>
{
// Just loop.
int ctr = 0;
for (ctr = 0; ctr <= 1000000; ctr++) { }
Console.WriteLine("Finished {0} loop iterations", ctr);
});
Console.WriteLine("可能接着执行到这儿");
task.Wait();
Console.ReadKey();
//Task.Factory.StartNew
Task task = Task.Factory.StartNew(() =>
{
// Just loop.
int ctr = 0;
for (ctr = 0; ctr <= 1000000; ctr++){ }
Console.WriteLine("Finished {0} loop iterations",ctr);
});
task.Wait();
Console.ReadKey();
#endregion 创建和执行任务