6

Quiero usar TPL en el proceso de trabajo en Windows Azure. Estoy mirando para agregar un IJob la cola, esto tiene un método de ejecución, por lo que el trabajador estará formado por:Tareas máximas en TPL?

bucle consigue el artículo de cola de Uso TPL llamar IJob.Run, esta es una llamada asincrónica

Pero estoy un poco preocupado por los elementos máximos que puedo agregar a TPL? Me complace construir mi propio grupo TPL de algún tipo si es necesario, solo verifico sus capacidades.

Cheers, Ash.

Respuesta

9

Uno de los principales objetivos del TPL es eliminar la necesidad de preocuparse por esto. Al descomponer su trabajo en Tareas en lugar de Subprocesos, está permitiendo que el planificador maneje el equilibrio de esta manera más adecuada.

No hay un límite superior fijo para el número de "tareas" que puede programar. Están (por defecto, con TaskScheduler por defecto) programados usando ThreadPool, que a partir de .NET 4, se basa en el trabajo. Le sugiero encarecidamente que no trate de crear su propio grupo: es muy poco probable que lo haga mejor que el predeterminado. Dicho esto, si sus tareas tienen un comportamiento muy no estándar, es posible que desee considerar la posibilidad de escribir un TaskScheduler personalizado.

Además, tenga en cuenta que idealmente debe hacer sus tareas lo más "grandes posible". Hay una sobrecarga asociada a una tarea individual: que sean demasiado pequeños (en términos de trabajo) hará que los gastos generales tengan un mayor impacto en el rendimiento que si tiene un número adecuado de "tareas" más grandes.

+1

Tener 'Task's que son demasiado grandes también podría ser un problema, porque podría retrasar el procesamiento de otras' Task's. Por lo tanto, con grandes 'Tareas', puede obtener un mejor rendimiento, pero peor latencia. – svick