await和async以及Task并行库之间的区别

时间:2013-08-31 16:10:20

标签: c# .net c#-4.0 c#-5.0

任务并行库和等待和异步之间有什么区别。是什么需要引入await和async?我看到TPL是C#4.0的一部分,等待/ async是C#5.0的一部分,但除此之外,基本的区别是什么。需要引入这个新关键字是什么?

1 个答案:

答案 0 :(得分:25)

任务并行库是为parallel programming设计的 - 当你有很多工作要做并希望在多个线程之间拆分工作时,你可以使用所有的CPU核心。 TPL最适合CPU密集型工作。

Async和await适用于asynchronous programming - 当您有一个将来完成的操作(或许多操作)时,您希望在此期间执行其他操作。 Async最适合I / O绑定工作。

有一些重叠。例如,您可以将并行计算视为异步操作,因此它不会占用您的UI线程。此外,TPL和async / await都使用Task类型,尽管它们以非常不同的方式使用它。

相关问题