await、async和任务并行库的区别

18

任务并行库(TPL)和await/async有什么区别?介绍await和async的必要性是什么?我知道TPL是C# 4.0的一部分,而await/async是C# 5.0的一部分,但除此之外有什么基本区别?为什么需要引入这个新关键字?


关键在于组合。 - Paul Chen
http://blogs.msdn.com/b/ericlippert/archive/2010/10/28/asynchrony-in-c-5-part-one.aspx - I4V
1
TPL是在C# 4.0发布时同时发布的,但它不是C# 4.0的一部分,而是.NET 4.0的一部分。C# 4.0中与TPL无关的内容。 - svick
1个回答

32

任务并行库是为了进行并行编程而设计的 - 当您有很多工作要做并希望将该工作分配给多个线程以便使用所有CPU核心时。TPL最适合CPU密集型工作。

异步和等待是用于异步编程 - 当您有一个(或多个)将来会完成的操作,并且您想在此期间做其他事情时。异步最适合I/O绑定工作。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接