Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 26065|Répondre: 2

[Source] Une brève analyse de l’utilisation du pool de threads .net/C# ThreadPool

[Copié le lien]
Publié sur 21/06/2017 09:43:20 | | | |
Qu’est-ce qu’un pool de fils ? Pourquoi utiliser des pools de threads ? Comment utiliser les pools de fils ?

1. Qu’est-ce qu’un pool de fils ?

        La classe ThreadPool du .NET Framework fournit un pool de threads pouvant être utilisé pour exécuter des tâches, envoyer des éléments de travail, gérer les E/S asynchrones, attendre au nom d’autres threads et gérer les minuteurs. Alors, qu’est-ce qu’un pool de fils ? Le pool de threads est en réalité un « pool » qui stocke des objets thread, et il fournit quelques méthodes de base, comme définir le nombre minimum/maximum de threads dans le pool, mettre en file d’attente les méthodes à exécuter, etc. ThreadPool est une classe statique, donc elle peut être utilisée directement sans créer d’objets.

2. Pourquoi utiliser des pools de fils ? Quels sont les avantages ?

        Le site officiel de Microsoft indique ceci : De nombreuses applications créent un grand nombre de fils de discussion qui sont en veille, attendant que les événements se produisent. Il existe aussi de nombreux fils qui peuvent entrer en hibernation juste pour se réveiller périodiquement afin de vérifier des informations d’état modifiées ou mises à jour. Pools de threads, ce qui vous permet d’utiliser les threads plus efficacement via un pool de threads travailleurs géré par le système.

        Pour faire simple, chaque nouveau thread doit occuper de l’espace mémoire et d’autres ressources, et avec autant de nouveaux threads, beaucoup sont en dormance ou en attente de la libération de ressources. Il existe de nombreux threads qui ne font qu’un petit travail périodiquement, comme rafraîchir des données, etc., et qui sont trop gaspilleurs à dessiner, et il est rare qu’un grand nombre de threads explosent en programmation réelle puis se terminent en peu de temps. C’est pourquoi le concept de pools de threads a été proposé. Si l’application effectue une nouvelle requête au pool de threads, le thread en état d’attente est activé et exécute la tâche sans créer de nouveau thread, ce qui évite beaucoup de surcharge. Le système ne détruira automatiquement les threads que lorsque le nombre de threads atteint le maximum de threads. Ainsi, l’utilisation de pools de threads peut éviter d’importants coûts de création et de destruction, offrir de meilleures performances et stabilité, et deuxièmement, les développeurs peuvent se concentrer sur d’autres tâches en confiant les threads à la gestion système.


3. Comment utiliser les pools de fils ?

En fait, les pools de threads sont très simples à utiliser, comme suit

a. Définir le pool de threads maximal et minimal :

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Définissez le nombre de requêtes pour un pool de threads pouvant être actifs en même temps. Toutes les requêtes supérieures à ce nombre resteront en file d’attente jusqu’à ce que le fil du pool de threads soit disponible. Vous pouvez aussi définir le nombre minimum de threads.

b. Ajouter des tâches au pool de threads :

ThreadPool.QueueUserWorkItem(nouveau WaitCallback(nom de la méthode)) ;

ou
ThreadPool.QueueUserWorkItem (nouveau WaitCallback (nom de la méthode), paramètre) ;

Par exemple, si un maximum de 5 threads dans le pool de threads exécute une méthode 60 fois, le salaire total sur 5 ans est le suivant :



Si vous n’utilisez pas le pooling de threads, vous devrez peut-être ouvrir 60 threads pour exécuter la méthode Run() de manière asynchrone, ce qui est un gaspillage de ressources d’espace. Nous utilisons maintenant jusqu’à 5 threads, qui peuvent être exécutés en 1 seconde, et l’efficacité ainsi que les performances sont très bonnes.





Précédent:Code plein écran de la carte Baidu (code plein écran div)
Prochain:Avis de traitement de l’accès bloquant l’URL illégale d’Alibaba Cloud
 Propriétaire| Publié sur 21/06/2017 09:47:12 |

Les pools de fils présentent ces avantages :

1. En multithreading, le pool de threads peut réduire le nombre de threads créés et réutiliser raisonnablement les threads dans le pool. Parce que les threads avec des threads dans le pool de threads sont en attente d’être assignés.

2. Il n’est pas nécessaire de gérer et de maintenir des threads à courte durée de vie, pas besoin d’allouer des ressources lors de leur création, ni de libérer des ressources après avoir accompli leurs tâches.

3. Le pool de threads optimisera les threads du pool selon les caractéristiques actuelles du système.

Inconvénients des pools de fils :

Après avoir confié la tâche au pool de threads pour la terminer, nous ne pouvons pas contrôler la priorité du thread, définir certains noms des threads et autres informations. [Mais on peut ajouter une couche pour affiner ça avant de le mettre dans le pool de fils]

Publié sur 06/12/2017 11:28:49 |
Marquez-le d’abord, pour que vous puissiez apprendre plus tard
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com