【发布时间】:2011-07-08 21:27:25
【问题描述】:
出于好奇,asp.net中可用于处理请求的最大线程数是多少。
asp.net 是否会为任何 I/O 或数据库操作释放它们以便处理最大数量的请求?
【问题讨论】:
标签: c# asp.net multithreading
出于好奇,asp.net中可用于处理请求的最大线程数是多少。
asp.net 是否会为任何 I/O 或数据库操作释放它们以便处理最大数量的请求?
【问题讨论】:
标签: c# asp.net multithreading
它是通过 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
【讨论】:
ThreadPool 由框架管理。因此,很难预测它何时会发布。但是,整个想法是您不必为此烦恼。
在 .net 4.0 中,每个 CPU 有 250 个工作线程和 1,000 个 I/O 完成线程...
【讨论】:
要为 I/O 操作释放工作线程,您需要使用 async/await 模式。当您“等待”一个异步文件操作时,该线程将被释放回 ASP.NET 线程池,然后用于处理其他请求,直到您的文件 i/o 操作完成。
http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4
【讨论】: