C # Multithreading

C # Multithreading
Un fil est censé être un processus, une tâche ou un chemin d'exécution léger de tout code ou programme. Les threads sont utilisés pour effectuer une tâche ou un travail spécifique et avoir leur contrôle. Le concept de multithreading arrive lorsque nous divisons un gros fil en petits fils pour les faire exécuter simultanément. De cette façon, la charge de travail peut être gérée et la complexité peut être évitée. Dans la programmation C #, nous avons reçu le «système.Filetage.Thread ”classe pour effectuer le multithreading en utilisant ses fonctions utiles. Cet article est pour chaque utilisateur C # qui n'a aucune expérience dans le multithreading et veut apprendre ses bases. Commençons maintenant.

Exemple # 01: le fil principal

Vous pouvez vérifier le répertoire de travail actuel pour rechercher votre fichier nouvellement généré. Ouvrez votre nouveau fichier C # dans l'un des éditeurs disponibles de votre Ubuntu 20.04 Système. Nous l'avons ouvert dans l'éditeur «Texte», car il est très pratique à utiliser pour les débutants ainsi que pour les experts. Comme le sujet le suggère, nous discuterons du concept de multithreading. Lorsque nous créons un objet de la classe «Thread», nous créons un fil d'enfant du thread en cours d'exécution. Si vous souhaitez utiliser l'objet pour spécifier le nom d'un thread parent, vous devez utiliser la propriété «CurrentThread» de la classe de thread.

Ainsi, dans notre premier exemple, nous examinerons la propriété «CurrentThread» de la classe de threads de C #. Nous commençons notre premier exemple de code avec l'initialisation de la bibliothèque «système» et du «système.Classe de filetage. Nous avons créé un espace de noms nommé «Multithread» et créé une classe «threading» dedans. La fonction principale () de cette classe a été lancée avec l'initialisation de l'objet de classe «Thread» tout en utilisant la propriété «CurrentThread». Maintenant, l'objet pointe vers le fil parent.

Nous utilisons l'objet de thread parent «T» pour appeler la propriété «Nom» de la classe de thread pour obtenir le nom d'un thread actuel I.e. le fil principal (). Nous lui avons donné le nom «Main» selon le code ci-dessous. La fonction WriteLine () de la classe de console est utilisée pour afficher le nom d'un thread parent sur notre écran de terminal en appelant la propriété «Nom» par l'objet «T» de la classe de threads.

La toute première étape après l'enregistrement de notre code est de compiler le code C #. Pour cela, votre système doit avoir le compilateur C # «MCS» intégré. Après avoir compilé ce fichier avec «MCS», le fichier Code «EXE» sera automatiquement généré dans le répertoire de travail actuel d'Ubuntu 20.04. Nous devons utiliser ce fichier «exe» pour exécuter le code avec l'instruction d'exécution «mono» pour C #. Après l'avoir exécuté, nous avons constaté que le thread «principal» est en cours d'exécution.

Exemple # 02: Créez un fil d'enfant

Jetons un coup d'œil à la création d'un nouveau thread en utilisant une fonction de données «non statique» dans le code. Pour cela, nous avons utilisé la même structure d'un code C #.e. L'utilisation de la bibliothèque «système» et du système.Classe de filetage. Nous avons créé deux classes I.e. mythread, et nouveau. L'exécution de ce code sera démarrée à partir de la nouvelle classe car elle contient le thread de fonction Main (). La console.Les instructions WriteLine () nous montreront que la fonction principale () est en cours d'exécution.

Après cela, l'objet «T1» d'une classe «mythread» a été créé. Cette création d'objets ne signifie pas que nous avons créé un objet de thread. Cet objet est utilisé pour appeler les fonctions de classe Mythread. L'objet de classe de thread «T» a été créé pour créer un nouveau thread. Tandis que la propriété ThreadStart de cette classe de thread a été utilisée pour démarrer la fonction «Threading» de la classe «Mythread» en tant que nouveau thread.

L'objet «T1» appelle sa fonction dans les paramètres de la fonction «ThreadStart» comme début d'un nouveau thread. Vous devez utiliser l'objet «T» pour appeler la fonction «Démarrer» de la classe de threads pour démarrer l'exécution d'un nouveau thread. Ainsi, la fonction de threading () de la classe Mythread sera exécutée. C'est pour Loop sera exécuté 5 fois, affichant que la fonction de thread est en cours d'exécution. Le code est maintenant terminé. Voyons voir comment ça fonctionne.

Après avoir compilé et exécuté nos fichiers C # «CS» et «EXE» respectivement, nous avons obtenu la sortie à faire affiché. Le fil d'enfant de la classe «Mythread» a été exécuté 5 fois, selon la boucle «pour».

Exemple # 03: Plus d'un fil

L'exemple ci-dessus concernait la création d'un seul fil. Dans cet exemple, nous discuterons de l'utilisation des fonctions statiques pour créer plus d'un fil d'enfant dans le programme. Donc, nous avons créé deux classes avec les mêmes noms que je.e. mythread et nouveau. La nouvelle classe contient la seule méthode Main () qui est utilisée pour créer deux objets T1 et T2 pour la classe de threads afin de créer de nouveaux threads enfants.

Ces objets ont utilisé les fonctions de threading1 () et de threading2 () de la classe MyThread pour les créer en tant que nouveaux threads enfants. La fonction «start ()» de la classe de thread a été utilisée pour démarrer la fonction de thread1 () et de filetage2 () à l'aide des objets de thread T1 et T2. Comme les deux fonctions de thread sont statiques, le deuxième thread ne peut pas être démarré avant que le premier ne termine son exécution. Les deux threads ont exécuté leurs déclarations 3 fois et le code sera résilié.

Après avoir exécuté ce code compilé, la sortie montre l'exécution des deux threads séparément.

Exemple # 04: Abandant le fil

La classe de thread a la fonction about () pour terminer les threads. Il utilise la threadabortexection pour effectuer la terminaison. Jetons un coup d'œil à ceci en créant deux classes, Mythread et New. La fonction principale () a commencé avec la création de l'objet «T» pour la classe Mythread avec son nom «Thread».

Le constructeur de la classe MyThread a commencé à exécuter et à initialiser un nouveau thread enfant avec l'objet de classe de thread «T1» en utilisant la fonction «StartThread» dans ses paramètres. Le nom a été affecté à la propriété du nom et le fil a commencé. Les fonctions de thread «StartThread» commencent par une instruction «Try-Fatch». L'instruction «TRY» continuera à fonctionner jusqu'à ce que le module d'une valeur dans sa boucle de 7 soit égal à 0. Lorsque l'exception se produit, la déclaration catch () lèvera une exception abandonnée.

Après avoir exécuté ce code, nous avons exécuté le thread jusqu'à la valeur 49 et terminé au code 300. Le fil a été abandonné en raison de la déclaration «IF» et de la console.Déclaration écrite () avant la déclaration de Catch () a été évitée.

Conclusion

Ce guide est un incontournable pour chaque utilisateur C # qui veut apprendre les bases du multithreading. Nous avons entièrement expliqué l'utilisation de la classe de threads en C #, pour créer des threads et les nommer avec le thread actuel et la propriété «Nom». Nous avons discuté de l'utilisation de la création d'objets de classe «thread» pour créer un seul thread ou plusieurs threads à la fois et les démarrer avec la fonction «Démarrer» de la classe de threads. Nous avons également vu comment utiliser la fonction Abort () dans le code C # pour terminer un thread à l'aide d'une instruction TRY-Catch dans le code.