查看Web.Config中的processmodel元素,有两个属性。
maxWorkerThreads="25"
maxIoThreads="25"
工作线程和I/O线程之间的区别是什么?
查看Web.Config中的processmodel元素,有两个属性。
maxWorkerThreads="25"
maxIoThreads="25"
工作线程和I/O线程之间的区别是什么?
从根本上讲,这与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