169 votes

Nombre maximum de threads dans une application .NET?

Quel est le nombre maximum de threads que vous pouvez créer dans une application C#? Et que se passe-t-il lorsque vous atteignez cette limite? Est-ce qu'une exception de quelque sorte est lancée?

0 votes

La réponse sera différente si vous utilisez la machine virtuelle x64 ou la machine virtuelle x86

0 votes

Dans ma situation, c'est x86, mais pouvez-vous fournir la réponse pour les deux au cas où quelqu'un d'autre en aurait besoin ?

0 votes

Je manque d'une réponse à la question de ce qui se passe lorsque la limite est atteinte. L'application va-t-elle planter ou les threads resteront-ils dans la file d'attente?

4voto

Ash Points 31541

Jeff Richter dans CLR via C#:

"Avec la version 2.0 du CLR, le nombre maximum de threads de travail est par défaut de 25 par CPU dans la machine et le nombre maximum de threads I/O est par défaut de 1000. Une limite de 1000 n'est effectivement aucune limite."

Notez que ceci est basé sur .NET 2.0. Cela pourrait avoir changé dans .NET 3.5.

[Édition] Comme l'a souligné @Mitch, ceci est spécifique au ThreadPool du CLR. Si vous créez des threads directement, consultez les commentaires de @Mitch et des autres.

0 votes

Vous confondez CLR 2.0 et .NET 2.0 dans votre commentaire sur .NET 3.5.

0 votes

Autant que je sache, le SP1 de .NET 2.0 (partie de .NET 3.5) a changé le nombre de threads de travail par défaut à 250 par CPU/core pour les pools de threads.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X