12/01/2021 Pool de discussions en C # - Blog de Gyanendu Shekhar gyanendushekha
12/01/2021 Pool de discussions en C # - Blog de Gyanendu Shekhar gyanendushekhar.com/2016/05/16/thread-pool-csharp/ 1/4 Pool de threads en C # 16 mai 2016 Gyanendu Shekhar 0 commentaire .NET , C # , Enfilez Piscine , Fil Pooling , filetage Dans cet article, je vais expliquer le pool de threads en C #. Des connaissances de base en multithreading seront utiles pour comprendre cet article. Veuillez consulter mon article Multithreading en C # pour connaître le concept de base du multithreading. Pourquoi un pool de threads est requis? C # permet d'écrire une application multithread qui peut améliorer les performances de l'application, mais il y a quelques inconvénients à créer beaucoup plus de threads en C #: Créer et détruire un thread est une opération qui prend du temps - plus vous créerez de threads, plus il faudra de temps La création des threads consomme également de la mémoire; un nombre élevé de threads nécessitera plus de mémoire pour exécuter l'application La gestion d'un nombre élevé de threads est également un problème. Dans le système d'exploitation, les planificateurs sont responsables d'exécuter les threads en fonction de leurs priorités. S'il y a beaucoup de threads, la planification et le changement de contexte entre les différents threads coûteront plus de temps et cela sera mauvais pour les performances de l'application. Ainsi, la gestion d'un nombre élevé de threads peut entraîner de mauvaises performances de l'application. Dans le framework .NET, le pool de threads est utile pour résoudre ce problème. Pool de threads en C # Le pool de threads peut être considéré comme la collection de threads pouvant être utilisée par n'importe quelle application dans .NET Framework. Voyons comment le pool de threads est traité dans .NET Framework. Au début, aucun thread n'est présent dans le pool de threads. Lorsque l'application demande, le thread du pool de threads en crée un. L'attribution de threads à n'importe quelle application est gérée par le pool de threads. Le pool de threads conserve une file d'attente pour gérer la demande de thread entrante de l'application. Lorsqu'une méthode ou une tâche d'une application a été appelée, le pool de threads ajoute cette demande à sa file d'attente. Le pool de threads sélectionne une demande dans la file d'attente et affecte un thread à cette demande. Lorsque la tâche est terminée, le thread associé n'est pas détruit; le thread est en fait renvoyé au pool de threads, où ce thread sera affecté à une autre tâche extraite de la file d'attente maintenue. La réutilisation des threads dans le pool de threads le rend plus efficace. Cette fonctionnalité permet de traiter de nombreuses tâches avec moins de threads. Lorsque toutes les tâches sont terminées, le thread passe à l'état inactif ou ils ont été détruits par le pool de threads. 12/01/2021 Pool de discussions en C # - Blog de Gyanendu Shekhar gyanendushekhar.com/2016/05/16/thread-pool-csharp/ 2/4 En C #, la classe ThreadPool est présente dans l'espace de noms System.Threading. Cette classe est statique, vous pouvez donc utiliser directement cette classe sans créer son instance. Cette classe ThreadPool est chargée de créer et d'allouer des threads pour l'exécution des tâches. Cette classe génère automatiquement des threads sur demande et les gère. Pour ajouter une méthode dans la file d'attente gérée par la classe ThreadPool, utilisez la méthode «QueueUserWorkItem». Cette méthode a deux surcharges comme suit: Dans la définition des méthodes ci-dessus, deux arguments ont été utilisés: WaitCallBack: délégué System.Threading.WaitCallBack, qui pointe vers la méthode appelante qui s'exécutera. La définition de la méthode d'appel doit correspondre au délégué WaitCallBack. State: un type d'objet contient des données qui peuvent être utilisées par la méthode. Thread Pooling en C # - un exemple Dans l'exemple, j'ai ajouté la même méthode avec un état d'objet différent en tant que paramètre dix fois. 1 2 3 4 [SecuritySafeCritical] public static bool QueueUserWorkItem(WaitCallback callBack); [SecuritySafeCritical] public static bool QueueUserWorkItem(WaitCallback callBack, object state); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 using System; using System.Threading; namespace ThreadpoolDemo { class Program { static void Main(string[] args) { for (int i = 0; i < 10; i++) { // QueueUserWorkItem will queue mymethod to the Thread Po // Here I am adding myMethod ten time with different obje ThreadPool.QueueUserWorkItem(new WaitCallback(myMethod), } Console.WriteLine("Main thread execution, Thread ID - {0}", T Console.ReadLine(); } // this method will be handled by thread pool static void myMethod(object state) { Console.WriteLine("Thread ID "+ Thread.CurrentThread.ManagedT } } 12/01/2021 Pool de discussions en C # - Blog de Gyanendu Shekhar gyanendushekhar.com/2016/05/16/thread-pool-csharp/ 3/4 Bio Derniers messages ← Multithreading en C # Parallélisme de tâches en C # → Lorsque vous exécuterez le code ci-dessus, vous obtiendrez une sortie comme celle-ci: Comme vous pouvez le voir dans la sortie, les dix méthodes ont été gérées par trois threads. Voilà pour l'article - Thread Pool en C #. Postez vos commentaires pour des questions et des commentaires. Gyanendu Shekhar Gyanendu Shekhar est un passionné de technologie. Il adore apprendre les nouvelles technologies. Son domaine d'intérêt comprend les technologies Microsoft, la réalité augmentée, la réalité virtuelle, unity3d et le développement Android. 26 } 12/01/2021 Pool de discussions en C # - Blog de Gyanendu Shekhar gyanendushekhar.com/2016/05/16/thread-pool-csharp/ 4/4 Gyanendu Shekhar Gyanendu Shekhar est un passionné de technologie. Il adore apprendre les nouvelles technologies. Son domaine d'intérêt comprend les technologies Microsoft, la réalité augmentée, la réalité virtuelle, unity3d et le développement Android. Laisser un commentaire Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués * Commentaire uploads/Management/ pool-de-discussions-en-c-blog-de-gyanendu-shekhar.pdf
Documents similaires
-
17
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 05, 2022
- Catégorie Management
- Langue French
- Taille du fichier 0.2447MB