解决方法
基本上不是很多,它是关于ASP.NET和IIS如何分配I / O等待对象,并管理通过网络进行通信和传输数据的争用和延迟。
I / O线程被放在一边,因为它们将执行I / O(顾名思义),并且可能必须等待“长”时间段(数百毫秒)。它们还可以进行优化和使用不同,以利用Windows内核中的I / O完成端口功能。单个I / O线程可能正在管理多个完成端口以维持吞吐量。
Windows具有很多处理I / O阻塞的功能,而ASP.NET / .NET有一个简单的“Thread”概念。 ASP.NET可以通过在操作系统中使用更多的非托管线程功能来优化I / O。您不会想要为每个线程一直这样做,因为您失去了.NET提供的许多功能,这就是为什么要区分如何使用线程。
工作线程是正常的“工作”或只是简单的代码/处理的线程。工作线程不太可能阻塞很多或等待任何事情,并且将短暂运行,因此需要更积极的调度以最大化处理能力和吞吐量。
[编辑]:我也发现这个与这个问题特别相关的链接:
http://blogs.msdn.com/ericeil/archive/2008/06/20/windows-i-o-threads-vs-managed-i-o-threads.aspx