use - thread c# visual studio
Número máximo de segmentos em um aplicativo.NET? (4)
Qual é o número máximo de threads que você pode criar em um aplicativo C #? E o que acontece quando você atinge esse limite? É uma exceção de algum tipo lançada?
Eu fiz um teste em um sistema de 64 bits com c # console, a exceção é o tipo de memória insuficiente, usando 2949 threads.
Eu percebo que devemos usar o pool de threads, o que eu faço, mas esta resposta é em resposta à questão principal;)
Jeff Richter no CLR via C #:
"Com a versão 2.0 do CLR, o número máximo de encadeamentos de trabalho é 25 por CPU na máquina e o número máximo de encadeamentos de E / S é 1000. Um limite de 1000 não tem limite algum."
Observe que isso é baseado no .NET 2.0. Isso pode ter mudado no .NET 3.5.
[Edit] Como apontado pelo @Mitch, isso é específico para o ThreadPool do CLR. Se você está criando tópicos diretamente, veja os comentários do @Mitch e outros.
Não há limite inerente. O número máximo de encadeamentos é determinado pela quantidade de recursos físicos disponíveis. Veja este artigo por Raymond Chen para detalhes.
Se você precisa perguntar qual é o número máximo de threads, você provavelmente está fazendo algo errado.
[ Atualização : apenas por interesse: números padrão de Thread Pool do .NET.
- 1023 no Framework 4.0 (ambiente de 32 bits)
- 32767 no Framework 4.0 (ambiente de 64 bits)
- 250 por núcleo no Framework 3.5
- 25 por núcleo no Framework 2.0
(Estes números podem variar dependendo do hardware e sistema operacional)
Você deve estar usando o conjunto de encadeamentos (ou delgates assíncronos, que, por sua vez, usam o conjunto de encadeamentos) para que o sistema possa decidir quantos encadeamentos devem ser executados.