Quando uma tarefa deve ser considerada "de longa duração"?

Ao trabalhar com tarefas, uma regra geral parece ser o pool de encadeamentos - normalmente usado por ex. invocandoTask.Run()ouParallel.Invoke() - deve ser usado pararelativamente curto operações. Ao trabalhar com operações de longa execução, devemos usar o métodoTaskCreationOptions.LongRunning sinalizador para - até onde eu entendi - evitar o entupimento da fila do conjunto de encadeamentos, ou seja, para enviar trabalho para um encadeamento recém-criado.

Mas o que exatamente é umlongo prazo Operação?Quanto tempo é longo, em termos de tempo? Existem outros fatores além da duração esperada da tarefa a serem considerados ao decidir se deve ou não usar oLongRunning, como a arquitetura antecipada da CPU (frequência, número de núcleos, ...) ou o número de tarefas que tentarão ser executadas ao mesmo tempo da perspectiva do programador?

Por exemplo, suponha que eu tenha 500 tarefas para processar em um aplicativo dedicado, cada uma levando de 10 a 20 segundos para ser concluída. Devo iniciar todas as 500 tarefas usando o Task.Run (por exemplo, em um loop) e aguardar todas, talvez comoLongRunning, deixando o nível máximo padrão de simultaneidade? Então, novamente, se eu definirLongRunning nesse caso, isso não criaria 500 novos threads e realmente causaria muita sobrecarga e maior uso de memória (devido à alocação de threads extras) em comparação à omissãoLongRunning? Isso pressupõe que nenhuma nova tarefa será agendada para execução enquanto essas 500 estiverem sendo aguardadas.

Eu acho que a decisão de definirLongRunning depende do número de solicitações feitas ao conjunto de encadeamentos em um determinado intervalo de tempo e queLongRunning deve ser usado apenas para tarefas que se espera que levem significativamente mais tempo que a maioria das tarefas colocadas no conjunto de encadeamentos - por definição, no máximo uma pequena porcentagem de todas as tarefas. Em outras palavras, esse parece ser um problema de otimização de utilização de enfileiramento de filas e encadeamentos que provavelmente deve ser resolvido caso a caso através de testes, se houver. Estou correcto?