2013-08-31 91 views
13

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

+0

关键是关于作曲。 – Diryboy

+0

http://blogs.msdn.com/b/ericlippert/archive/2010/10/28/asynchrony-in-c-5-part-one.aspx – I4V

+1

TPL与C#4.0同时发布,但它是不是它的一部分,它是.Net 4.0的一部分。 C#4.0中没有任何与TPL相关的东西。 – svick

回答

24

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

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

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