Pregunta

Yo entiendo que el TPL utiliza colas de robar el trabajo de sus tareas cuando yo haga cosas como Parallel.For y construcciones similares.

Si entiendo esto correctamente, el constructo hará girar una serie de tareas, donde cada comenzará elementos de procesamiento. Si una de las tareas asignadas completar sus artículos, se iniciará el robo de artículos de las otras tareas que aún no ha completado el suyo. Esto resuelve el problema donde los artículos 1-100 son baratos de proceso y artículos 101-200 son costosos, y una de las dos tareas simplemente se sentaba en reposo hasta que el otro completado. (Sé que esto es un exaplanation simplificado.)

Sin embargo, ¿cómo va a esta escala en un servidor terminal o en una aplicación web (suponiendo que utilizamos TPL en el código que se ejecuta en la aplicación web)? Podemos riesgo de saturar las CPUs con tareas sólo porque hay N instancias de nuestra aplicación que se ejecuta al lado del otro?

¿Hay alguna información sobre este tema que debo leer? Todavía tengo que encontrar nada en particular, pero eso no significa que no hay ninguno.

¿Fue útil?

Solución

Es posible que pueda utilizar el TPL para mejorar las operaciones de E / S de la envolvente moviendo a un modelo asíncrono. También podría ser capaz de mejorar la latencia petición al hacer un mayor uso de la capacidad del procesador utilizado disponible en un servidor web en situaciones de baja carga. Usted quiere pensar en esto muy cuidadosamente como bajo altas cargas que los procesadores ya están 100% utilizado la adición de más paralelismo reducirá el rendimiento en el servidor.

Esto se discute en el Paralelo Blog Extensiones Equipo:

Usando extensiones paralelas para .NET 4 en ASP.NET aplicaciones

Sospecho que el mismo argumento se aplica a las aplicaciones de Terminal Server también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top