Estou trabalhando em um projeto ASP .NET Core, onde tenho classes gerenciando um pool de threads de trabalho para execução de tarefas, e estou usando o pool de threads .NET para manipular e executar tarefas para processar solicitações HTTP de entrada.
ThreadPool.SetMinThreads(workerThreads: 4, completionPortThreads: 4);
ThreadPool.SetMaxThreads(workerThreads: 70, completionPortThreads: 70);
Minha pergunta é: há alguma limitação nos valores que podem ser definidos para ThreadPool.SetMinThreads
e ThreadPool.SetMaxThreads
em um projeto ASP.NET Core?
Sim. De acordo com a documentação do primeiro método :
E de acordo com a documentação do segundo método :
A documentação para SetMaxThreads declara
...
Então, o limite superior é deixado definido pela implementação, e você deve ser capaz de chamar GetMaxThreads para confirmar o valor real. Na prática, eu esperaria que você encontrasse limitações de recursos e desempenho antes de qualquer limite rígido devido ao SO.
naturalmente, o número mínimo de threads deve ser positivo e menor que o número máximo:
Observe também esta observação:
Então, a menos que você tenha um problema específico e bem compreendido que precisa resolver, provavelmente é melhor deixar o número de threads sozinho. A recomendação é usar Tasks e código assíncrono ao executar qualquer operação de IO em vez de bloquear threads, então você raramente precisará usar mais threads do que CPUs.