ASP.net usa .Net threadpool (que es configurable) Cada solicitud es recibida por uno de los hilos en el threadpool, hasta que cada thread ya esté ocupado. Luego solicita cola en la Pila IIS, hasta que esto también se extienda. A partir de allí, las nuevas solicitudes se encuentran con el muy feo mensaje "El servidor no está disponible".
Esta es la historia habitual de 'multi-threading' para un sitio web de ASP.net.
Existen muchas formas de garantizar la escalabilidad. La más obvia es la prueba de rendimiento y la eliminación de cuellos de botella de su código.
ASP.net realmente puede aprovechar los múltiples núcleos al utilizar los hilos de E/S para cualquier solicitud de E/S. Es un código feo pero rápido nunca ha sido bonito.
Esta es la definitiva MSDN MAG post sobre cómo hacer esto
ACTUALIZACIÓN
Bueno, yo probablemente intento de responder a su pregunta completa:
"Lo más importante es que hay alguna ventaja para agregar subprocesos al código ASP.NET si el subprocesamiento se hace más alto en IIS? "
La respuesta corta es: ¡Depende! Si está esperando en un proceso de larga duración, entonces sería mejor que se poner en práctica una experiencia más agradable para el cliente solicitante (es decir, fuera de banda llamadas AJAX)
si tiene varias tareas independientes que necesitan ser completadas para el cliente solicitante: entonces es mejor que generes un nuevo proceso para ejecutar las tareas en paralelo.
Si su sitio recibe gran cantidad de tráfico, entonces usted realmente necesidad de considerar la implementación de patrones asincrónicos para utilizar mejor su CPU
Cualquier sitio web de diseño es multi-hilo, cada solicitud se sirve en gran parte en paralelo con todas las demás solicitudes –