一、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 创建和执行任务