【问题标题】:What is the maximum number of threads available in Asp.net ThreadPoolAsp.net ThreadPool 中可用的最大线程数是多少
【发布时间】:2011-07-08 21:27:25
【问题描述】:

出于好奇,asp.net中可用于处理请求的最大线程数是多少。

asp.net 是否会为任何 I/O 或数据库操作释放它们以便处理最大数量的请求?

【问题讨论】:

    标签: c# asp.net multithreading


    【解决方案1】:

    它是通过 machine.config 控制的。

    配置 > system.web > 流程模型

    <processModel 
       maxWorkerThreads="num"
       maxIoThreads="num"
       minWorkerThreads="num"
       minIoThreads="num"
       ...
       />
    

    它是基于每个 CPU 设置的。单 CPU 的默认值为 20/20。
    http://msdn.microsoft.com/en-us/library/7w2sway1(v=VS.100).aspx

    【讨论】:

    • 感谢您提供这些信息,但我仍然对我的问题的第二部分感到困惑,即如果 asp.net 代码忙于执行某些 IO 或数据库操作,是否释放工作线程。
    • ThreadPool 由框架管理。因此,很难预测它何时会发布。但是,整个想法是您不必为此烦恼。
    【解决方案2】:

    在 .net 4.0 中,每个 CPU 有 250 个工作线程和 1,000 个 I/O 完成线程...

    【讨论】:

    • 您可以使用GetMaxThreads和SetMaxThreads方法控制工作线程的限制...
    • 你的来源是什么?
    【解决方案3】:

    要为 I/O 操作释放工作线程,您需要使用 async/await 模式。当您“等待”一个异步文件操作时,该线程将被释放回 ASP.NET 线程池,然后用于处理其他请求,直到您的文件 i/o 操作完成。

    http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多