c# - await 和 async 与 Task 并行库的区别

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

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

最佳答案

任务并行库是为 parallel programming 设计的- 当您有很多工作要做并且想在多个线程之间拆分这些工作以便您可以使用所有 CPU 内核时。 TPL 最适合 CPU 密集型工作。

Async 和 await 适用于 asynchronous programming - 当你有一个操作(或多个操作)将在未来完成,而你想同时做其他事情。异步最适合 I/O 密集型工作。

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

关于c# - await 和 async 与 Task 并行库的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550094/

相关文章:

c# - 在c#中实现的数据库连接器接口(interface)

.net - 反序列化文件中的数据。性能问题

c# - 如果在 C# 中的 Catch block 中发生异常,会发生什么情况。在这种情况下调用者的结果也是什么

c# - 删除集合中的重复值

c# - 父子控件中的绘制顺序(OnPaint/OnPaintBackground 事件)是什么?

c# - Entity Framework - 使用长链依赖对象进行高效的预加载?

.net - 在 C# 中调用 C 函数并获取字符串输出

c# - 如何在 C# 中从 MongoDB 中以正确的 JSON 格式检索数据

c# - yield return 的线程安全性(是吗?)

c# - 针对 ActiveDirectory 进行身份验证