Asp.net 什么';工作线程和I/O线程之间的区别是什么?

Asp.net 什么';工作线程和I/O线程之间的区别是什么?,asp.net,multithreading,web-config,processmodel,Asp.net,Multithreading,Web Config,Processmodel,查看Web.Config中的processmodel元素,有两个属性 maxWorkerThreads="25" maxIoThreads="25" 工作线程和I/O线程之间的区别是什么?基本上不是很多,而是关于ASP.NET和IIS如何分配I/O等待对象,以及如何管理通过网络通信和传输数据的争用和延迟 由于I/O线程将执行I/O(顾名思义),并且可能需要等待“长”时间(数百毫秒),所以将I/O线程放在一边。它们还可以进行优化并以不同的方式使用,以利用Windows内核中的I/O完成端口功能

查看Web.Config中的processmodel元素,有两个属性

maxWorkerThreads="25" 
maxIoThreads="25"

工作线程和I/O线程之间的区别是什么?

基本上不是很多,而是关于ASP.NET和IIS如何分配I/O等待对象,以及如何管理通过网络通信和传输数据的争用和延迟

由于I/O线程将执行I/O(顾名思义),并且可能需要等待“长”时间(数百毫秒),所以将I/O线程放在一边。它们还可以进行优化并以不同的方式使用,以利用Windows内核中的I/O完成端口功能。单个I/O线程可以管理多个完成端口以保持吞吐量

Windows有很多处理I/O阻塞的功能,而ASP.NET/.NET有一个简单的“线程”概念。ASP.NET可以通过在操作系统中使用更多的非托管线程功能来优化I/O。您不希望总是对每个线程执行此操作,因为您会丢失.NET提供给您的许多功能,这就是为什么线程的使用方式会有所不同的原因

工作线程是执行常规“工作”或普通代码/处理的线程。工作线程不太可能大量阻塞或等待任何东西,而且运行时间很短,因此需要更积极的调度以最大化处理能力和吞吐量

[编辑]:我还发现了与此问题特别相关的链接:

只是为了增加chadmyers的功能。。。 似乎I/O线程是ASP.NET服务请求的旧方法

“IIS 5.0中的请求通常是 通过I/O线程或线程提供服务 正在执行异步I/O,因为 请求被发送到工作人员 使用异步写入的进程 命名管道。”

在IIS6.0中,情况发生了变化

“因此,所有请求现在都由 从CLR中提取的工作线程 线程池,而决不在I/O线程上。”

资料来源: