首页 > Task的异步编程模型

了解Task、入门、用法

在我们了解Task之前,如果我们要使用多核的功能可能就会自己来开线程,然而这种线程模型在.net 4.0之后被一种称为基于

“任务的编程模型”所冲击,因为task会比thread具有更小的性能开销,不过大家肯定会有疑惑,任务和线程到底有什么区别?


1:任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行。

2:任务跟线程不是一对一的关系,比如开10个任务并不是说会开10个线程,这一点任务有点类似线程池,但是任务相比线程池有很小

的开销和精确的控制。

方式1:

  var t1 = new Task(() => TaskMethod("Task 1"));
  t1.Start();
  Task.WaitAll(t1);//等待所有任务结束

  注:

  任务的状态:

  Start之前为:Created

  Start之后为:WaitingToRun 


方式2:

  Task.Run(() => TaskMethod("Task 2"));

方式3:

  Task.Factory.StartNew(() => TaskMethod("Task 3")); 直接异步的方法

  或者

  var t3=Task.Factory.StartNew(() => TaskMethod("Task 3"));
  Task.WaitAll(t3);//等待所有任务结束

  注:

  任务的状态:

  Start之前为:Running

  Start之后为:Running


      将偷懒进行到极致,是一个程序员的基本素养