C # parallèle foreach

C # parallèle foreach
Dans cet article, nous nous concentrerons sur la boucle parallèle Foreach dans le langage de programmation C #. Le mot parallèle dans la programmation C # provient du concept de tâches de thread, ce qui signifie que lorsque nous effectuons plus d'une tâche simultanément, nous pouvons utiliser la bibliothèque de tâches de thread pour appeler la bibliothèque parallèle de la tâche pour devenir parallèle pour, des boucles foreuse pour fonctionner pour fonctionner sur ces tâches, car ils sont plus efficaces et moins longs par rapport à des boucles séquentielles et foreach normales. La boucle parallèle Foreach divise les tâches et exécute les itérations dans plus d'un flux pour atteindre l'objectif final. Le foreach parallèle n'est utilisé que lorsqu'un processus est appelé itérativement pour la contribution et est co-dépendant des autres opérations car elle augmente le rythme des processus.

Maintenant, nous allons effectuer plusieurs exemples pour clarifier et augmenter la compréhension de la boucle Foreach parallèle dans le langage de programmation C #.

Exemple 01: Ajout de nombres à une liste en utilisant la boucle ForEach parallèle dans Ubuntu 20.04

Dans cet exemple, nous rédigerons un programme C # pour ajouter des nombres à une liste à l'aide de la boucle parallèle Foreach et marquer le nombre de threads simultanément affectés à chaque étape. Nous devrons utiliser différentes bibliothèques comme la tâche de filetage et le lien pour accéder à la surveillance et à l'efficacité du parallèle pour chaque boucle. Nous allons effectuer cet exemple dans l'Ubuntu 20.04 Environnement.g

Dans le code ci-dessus, nous avons généré une liste en utilisant le parallèle pour chaque boucle dans laquelle les nombres ont été attribués à la liste à l'aide de la fonction de plage. Ensuite, nous avons également imprimé les ID de thread à chaque étape pour surveiller le nombre de threads utilisés tout en attribuant des valeurs à la liste. Après avoir exécuté ce fichier de programme dans notre terminal de ligne de commande, nous obtiendrons la sortie suivante:

La sortie suggère que la liste a été attribuée 5 valeurs, et pendant ce processus, deux threads ont été utilisés, ce qui a créé un décalage horaire dans l'exécution de cette tâche. Si nous pouvons utiliser une boucle de Foreach séquentielle simple, la tâche aurait été effectuée dans un seul thread, et l'exécution serait supérieure au temps d'exécution de la boucle Foreach parallèle. Bien que cela varierait car cela dépend de la taille de la tâche à accomplir, car la boucle parallèle Foreach est plus pratique pour la plus grande taille de la tâche et du traitement car elle divise la tâche en plusieurs threads et fonctionne sur l'approche «diviser et conquérir».

Exemple 02: Contrôle du nombre de threads en utilisant une boucle parallèle Foroach dans Ubuntu 20.04

Dans cet exemple, nous contrôlerons la création du nombre de threads lorsqu'une boucle de Foreach parallèle est exécutée. La bibliothèque de filetage des tâches nous donne accès à une propriété étiquetée «degré maximal de parallélisme» qui contrôle les opérations parallèles de la classe d'options parallèles et l'attribution d'une valeur à cette propriété définit le nombre d'opérations parallèles à exécuter pendant le programme. Cette propriété est envoyée à la boucle parallèle FOREAK à travers un argument. Nous allons créer un programme C # pour attribuer des numéros à une liste et définir le nombre de threads pour exécuter cette tâche.

Comme nous pouvons le voir que le nombre total de threads utilisés dans l'exécution de cette tâche n'était que de 2, car nous avons corrigé ce nombre en attribuant une valeur au «degré maximal de parallélisme.«En cas d'énorme quantité de traitement des données, nous pouvons varier la valeur attribuée au degré maximal de parallélisme; Cela nous aidera à diviser la puissance de traitement de manière égale et efficiente parmi les sous-tâches ou les opérations parallèles.

Exemple 03: Liste d'impression avec variables de chaîne à l'aide de la boucle ForEach parallèle dans un programme C # dans Ubuntu 20.04

Dans cet exemple, nous allons imprimer les éléments d'une liste avec des variables de chaîne en utilisant la boucle ForEach parallèle dans un programme C # dans Ubuntu 20.04 Environnement. Nous allons d'abord initialiser une liste et lui attribuer des valeurs manuellement, puis imprimer tous ses éléments en tant que sortie en utilisant la boucle parallèle ForEach.

Dans le code ci-dessus, nous avons fait une liste nommée continents et ajouté les noms des continents à la liste avant d'utiliser le parallèle pour chaque boucle. Nous avons ajouté la bibliothèque de tâches de filetage afin d'utiliser la boucle ForEach parallèle pour notre code. La méthode parallèle Foreach prend la liste et un nouvel objet en tant que paramètre pour stocker temporairement les valeurs pour chaque itération. Après avoir exécuté ce fichier de code sur notre terminal de ligne de commande, nous obtiendrons la liste des noms des continents que nous avons enregistrés plus tôt dans notre liste.

Exemple 04: Comparaison de la boucle traditionnelle FOREACH avec séquentielle en utilisant une boucle ForEach parallèle en C # dans Ubuntu 20.04

Dans cet exemple, nous comparerons la boucle Foreach traditionnelle avec sa propriété séquentielle avec la boucle Foreach parallèle en effectuant une tâche similaire avec les deux boucles. Le temps d'exécution des deux boucles sera différent en raison de leur approche différente de la tâche. Nous imprimerons le contenu de la liste, qui sera initialisé avant l'opération, en utilisant la boucle Foreach traditionnelle avec sa propriété séquentielle et le parallèle pour chaque boucle.

Dans le programme C # ci-dessus, nous utilisons une boucle FOREACH normale et une boucle FOREAC parallèle et calculant le temps pris pour exécuter la tâche par les deux boucles; Nous utiliserons la classe de chronomètre de la bibliothèque «Diagnostics» du langage de programmation C #. La classe de chronomètre a une méthode «startNew ()», qui démarre le chronomètre, et la fonction Elapsed () est utilisée pour arrêter le chronomètre. Ces deux fonctions ont été rendues accessibles en faisant un objet de la classe de chronomètre.

La sortie montre que la boucle FOREAC traditionnelle a pris moins de temps à exécuter la tâche que la boucle FOREAC parallèle. La raison en est que l'exécution de la tâche est la mieux adaptée à une opération de thread unique, et créer plusieurs threads pour cette tâche serait long, mais si la liste aurait composé des milliers de données, alors le temps d'exécution serait vice versa Parce que dans ce scénario, la tâche serait efficace et économe en temps. Ainsi, lorsque vous utilisez la boucle parallèle Foreach, nous devons observer la taille de la puissance de traitement requise pour cette opération et considérer qui sera la boucle appropriée pour cette opération.

Conclusion:

Nous avons discuté de la boucle ForEach parallèle dans le langage de programmation C #. Dans cet article, la signification du nom «parallèle» a été discutée, ainsi que les différences pratiques entre une boucle Forach parallèle et une boucle FOREAL standard. Ensuite, nous avons mis en œuvre plusieurs exemples de la boucle parallèle FOREACH dans l'Ubuntu 20.04 Environnement pour saisir plus de clarté sur le sujet. Nous avons conclu que l'utilisation d'une boucle de Forach parallèle doit être surveillée lors de la programmation car elle peut aller dans les deux sens en raison de son mécanisme de filetage; La tâche est divisée, ce qui prendrait du temps dans le cas d'une tâche plus petite.