¿Cuándo se debe considerar una tarea como "larga ejecución"?

Cuando se trabaja con tareas, una regla general parece ser que el grupo de subprocesos, generalmente utilizado por p. invocandoTask.Run()oParallel.Invoke() - debe usarse pararelativamente corto operaciones Cuando trabajamos con operaciones de larga duración, se supone que debemos usarTaskCreationOptions.LongRunning para poder, por lo que yo entiendo, evitar obstruir la cola del grupo de subprocesos, es decir, empujar el trabajo a un subproceso recién creado.

Pero, ¿qué es exactamente unlarga carrera ¿operación?¿Cuánto tiempo es largo, en términos de tiempo? ¿Hay otros factores además de la duración de la tarea esperada a tener en cuenta al decidir si usar o noLongRunning, como la arquitectura de CPU anticipada (frecuencia, el número de núcleos, ...) o el número de tareas que se intentarán ejecutar de una vez desde la perspectiva del programador?

Por ejemplo, supongamos que tengo 500 tareas para procesar en una aplicación dedicada, cada una de las cuales tarda entre 10 y 20 segundos en completarse. ¿Debo comenzar las 500 tareas usando Task.Run (por ejemplo, en un bucle) y luego esperarlas todas, tal vez comoLongRunning, mientras deja el nivel máximo predeterminado de concurrencia? Por otra parte, si configuroLongRunning en tal caso, ¿esto no crearía 500 nuevos hilos y realmente causaría una sobrecarga y un mayor uso de memoria (debido a la asignación de hilos adicionales) en comparación con la omisiónLongRunning? Esto supone que no se programarán nuevas tareas para la ejecución mientras se esperan estas 500.

Supongo que la decisión de establecerLongRunning depende de la cantidad de solicitudes realizadas al grupo de subprocesos en un intervalo de tiempo determinado, y queLongRunning solo debe usarse para tareas que se espera que demoren significativamente más que la mayoría de las tareas ubicadas en el grupo de subprocesos, por definición, como máximo, un pequeño porcentaje de todas las tareas. En otras palabras, esto parece ser un problema de optimización de la utilización de la cola y el grupo de subprocesos que probablemente debería resolverse caso por caso mediante pruebas, si es que lo hace. ¿Estoy en lo correcto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta