【问题标题】:Mechanics of Asynchronous Threads异步线程的机制
【发布时间】:2010-06-20 00:50:08
【问题描述】:

在 .NET 中,当您进行异步调用时,我知道此调用是在单独的线程中解决的,因此不会阻塞进行调用的原始线程。

这背后的机制是如何工作的。每次异步调用都会产生一个新线程,还是有一个共享异步线程来处理这些操作?如果是共享线程,在执行时做几个异步调用会互相阻塞。而且,如果生成了单个线程,如果在同一时间范围内进行许多异步调用,应用程序不会因为并发运行的线程过多而遇到严重的性能问题。

【问题讨论】:

    标签: .net concurrency asynchronous


    【解决方案1】:

    我相信这篇 MSDN 文章应该可以回答您的所有问题。请注意,您的大部分直觉实际上是正确的。您需要做的就是研究细节。

    Programming the Thread Pool in the .NET Framework

    【讨论】:

    • 更具体地说,异步 I/O 排队到属于 .NET 线程池的 I/O 完成端口。完成例程由线程池线程处理。异步计算只在线程池线程上运行。 IIRC。 :)
    • @Stephan - 你记得没错。我觉得这篇文章总体上符合要求,因为 ThreadPool 是所有魔法发生的地方。
    【解决方案2】:

    我假设 .NET Framework 将其 ThreadPool 用于任何异步操作,除非您自己专门创建并启动一个新线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 2020-01-08
      • 2015-02-15
      相关资源
      最近更新 更多