查看Web.Config中的processmodel元素有两个属性。
maxWorkerThreads="25"
maxIoThreads="25"
工作线程和I / O线程之间有什么区别?
答案 0 :(得分:26)
基本上不是很多,而是关于ASP.NET和IIS如何分配I / O等待对象以及管理通过网络进行通信和传输数据的争用和延迟。
I / O线程被搁置,因为它们将执行I / O(顾名思义)并且可能必须等待“很长”的时间段(数百毫秒)。它们还可以进行优化和使用,以利用Windows内核中的I / O完成端口功能。单个I / O线程可能正在管理多个完成端口以保持吞吐量。
Windows有很多处理I / O阻塞的功能,而ASP.NET / .NET有一个简单的“线程”概念。 ASP.NET可以通过在操作系统中使用更多非托管线程功能来优化I / O.你不希望每个线程都一直这样做,因为你失去了.NET给你的很多功能,这就是为什么线程的使用方式有所区别的原因。
工作线程是经常“工作”或只是普通代码/处理的线程。工作线程不太可能阻塞或等待任何事情,并且运行时很短,因此需要更积极的调度以最大化处理能力和吞吐量。
[编辑]:我还发现此链接与此问题特别相关: http://blogs.msdn.com/ericeil/archive/2008/06/20/windows-i-o-threads-vs-managed-i-o-threads.aspx
答案 1 :(得分:12)
只是添加到chadmyers ... 似乎I / O线程是ASP.NET服务请求的旧方式,
“IIS 5.0中的请求通常是 通过I / O线程或线程提供服务 执行异步I / O因为 请求被发送给工作人员 使用异步写入的进程 命名管道。“
使用IIS6.0已经改变了。
“因此,现在所有请求都由。提供服务 从CLR中提取的工作线程 线程池,永远不会在I / O线程上。“
来源:http://msdn.microsoft.com/hi-in/magazine/cc164128(en-us).aspx