使用异步编程范例是否始终提高性能

时间:2016-02-05 17:49:42

标签: c# asp.net multithreading asynchronous task-parallel-library

我开始阅读有关.net异步编程模型的文档和博客。在所有文档中,如果操作是阻止工作(访问文件系统,访问网络,访问sql等任何远程数据存储(如果您有更多阻止工作的示例请分享它们),请说使用async )。

如果我的系统有足够的能力在不使用异步模型的情况下运行所有​​工作,该怎么办? 我还需要异步吗?

我知道你会说不要浪费正在调用阻塞工作的线程,但我认为我在线程池上有很多免费线程。

请从asp.net应用程序角度威胁我的问题

2 个答案:

答案 0 :(得分:1)

异步(通过异步我假设你的意思是TAP)代码不是并行化,所以这与使用线程池中的线程来卸载其他工作不同。 Async只是更有效地使用线程;而不是在等待磁盘或网络执行某些工作时阻塞线程,而是在等待磁盘或网络完成时释放该线程以执行其他操作。如果你的程序非常线性,并且在等待这些资源时没有其他工作要做,那么没有异步代码是没有意义的。

答案 1 :(得分:0)

async用于所有非CPU限制工作的目的是将完全分配给您的应用程序的资源分配决策,更聪明的层可以决定如何最佳地分配工作核心,何时共享线程等等。