任务并行库和等待和异步之间有什么区别。是什么需要引入await和async?我看到TPL是C#4.0的一部分,等待/ async是C#5.0的一部分,但除此之外,基本的区别是什么。需要引入这个新关键字是什么?
答案 0 :(得分:25)
任务并行库是为parallel programming设计的 - 当你有很多工作要做并希望在多个线程之间拆分工作时,你可以使用所有的CPU核心。 TPL最适合CPU密集型工作。
Async和await适用于asynchronous programming - 当您有一个将来完成的操作(或许多操作)时,您希望在此期间执行其他操作。 Async最适合I / O绑定工作。
有一些重叠。例如,您可以将并行计算视为异步操作,因此它不会占用您的UI线程。此外,TPL和async / await都使用Task
类型,尽管它们以非常不同的方式使用它。