【问题标题】:Does using Async programming paradigm improve performance all time [duplicate]使用异步编程范式是否一直在提高性能[重复]
【发布时间】:2016-02-06 01:53:55
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这与“拥有权力”无关。事物以不同的速度运行,因此代码将不得不经常等待。在某些情况下,异步允许您在等待时做一些事情。
  • 当我说“有能力”时,我的意思是拥有更多的核心,因此意味着更多的线程池可以处理更多的并发线程
  • 这就是重点。这不是要并行做更多的工作。这是关于等待/利用等待。无论您拥有多少核心,您的硬盘都不会更快。如果您从磁盘读取,您可以等待操作完成或在等待时执行某些操作。

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


【解决方案1】:

async 用于所有非 CPU 绑定的工作的目的是,它将资源分配的决策完全委托给您的应用程序,并且更智能的层可以决定如何以最佳方式跨内核分配工作,何时共享线程等。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-06
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      相关资源
      最近更新 更多