thread proceso net multihilos hilos hebras eventos asp asincrono asp.net multithreading web-config processmodel

asp.net - proceso - multihilos en c#



¿Cuál es la diferencia entre un hilo de trabajo y un hilo de E/S? (2)

Mirando el elemento de processmodel en el Web.Config hay dos atributos.

maxWorkerThreads="25" maxIoThreads="25"

¿Cuál es la diferencia entre los subprocesos de trabajo y los subprocesos de E / S?


Básicamente, no mucho, se trata de cómo ASP.NET e IIS asignan objetos de espera de E / S y gestionan la contención y la latencia de la comunicación a través de la red y la transferencia de datos.

Los hilos de E / S se separan como tales porque harán E / S (como su nombre lo indica) y pueden tener que esperar períodos de tiempo "largos" (cientos de milisegundos). También se pueden optimizar y usar de manera diferente para aprovechar la funcionalidad del puerto de finalización de E / S en el kernel de Windows. Una única cadena de E / S puede estar administrando múltiples puertos de terminación para mantener el rendimiento.

Windows tiene muchas capacidades para lidiar con el bloqueo de E / S, mientras que ASP.NET/.NET tiene un concepto simple de "Subproceso". ASP.NET puede optimizar para E / S mediante el uso de más de las capacidades de subprocesamiento no administradas en el sistema operativo. No querrá hacer esto todo el tiempo para cada hilo, ya que pierde muchas de las capacidades que .NET le ofrece, razón por la cual existe una distinción entre la forma en que los hilos están destinados a ser utilizados.

Los subprocesos de trabajo son subprocesos sobre los cuales se produce un "trabajo" regular o simplemente un código / procesamiento. Es improbable que los hilos de trabajo bloqueen mucho o esperen nada y serán de ejecución corta y, por lo tanto, requieren una programación más agresiva para maximizar la potencia de procesamiento y el rendimiento.

[Editar]: También encontré este enlace que es particularmente relevante para esta pregunta: http://blogs.msdn.com/ericeil/archive/2008/06/20/windows-io-threads-vs-managed-io-threads .aspx


Solo para añadir a chadmyers ... Parece que los subprocesos de E / S eran la forma antigua en que se atendían las solicitudes de ASP.NET,

"Las solicitudes en IIS 5.0 se suelen atender a través de subprocesos de E / S o subprocesos que realizan E / S asíncronas porque las solicitudes se envían al proceso de trabajo mediante escrituras asincrónicas en un canalización con nombre".

con IIS6.0 esto ha cambiado.

"Por lo tanto, todas las solicitudes son atendidas por subprocesos de trabajo extraídos del grupo de subprocesos de CLR y nunca por subprocesos de E / S".

Fuente: http://msdn.microsoft.com/hi-in/magazine/cc164128(en-us).aspx