Utilisation de la classe Parallel en C# pour l'exécution simultanée de tâches
Utilisation de la classe Parallel en C# pour l'exécution simultanée de tâches
Introduction
La classe Parallel est un outil puissant dans le langage de programmation C#, permettant l'exécution simultanée de tâches pour améliorer les performances d'une application. Elle facilite la programmation parallèle en fournissant des abstractions pour lancer et gérer l'exécution de plusieurs threads ou tâches en parallèle. Dans cet article, nous explorerons les fonctionnalités de base de la classe Parallel et fournirons des exemples de code pour illustrer son utilisation.
Utilisation de base
La classe Parallel fait partie de l'espace de noms System.Threading.Tasks dans .NET. Pour l'utiliser, il faut inclure l'instruction using System.Threading.Tasks;
dans votre code.
La méthode la plus couramment utilisée dans Parallel est Parallel.For
, qui permet d'effectuer une boucle itérative de manière parallèle. Voici un exemple simple :
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Parallel.For(0, 10, i =>
{
Console.WriteLine("Itération {0}, Thread : {1}",
i, Task.CurrentId);
});
Console.ReadLine();
}
}
Dans cet exemple, nous utilisons `Parallel.For` pour exécuter une boucle itérative de 0 à 9. Chaque itération est traitée par un thread distinct, qui affiche le numéro de l'itération et l'identifiant du thread en cours. L'exécution des itérations peut se faire dans un ordre aléatoire en raison de la nature parallèle de l'exécution.
Exécution parallèle de méthodes
La classe Parallel permet également d'exécuter plusieurs méthodes simultanément en utilisant la méthode Parallel.Invoke
. Voici un exemple :
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Parallel.Invoke(
() => Method1(),
() => Method2(),
() => Method3()
);
Console.ReadLine();
}
static void Method1()
{
Console.WriteLine("Méthode 1 exécutée");
}
static void Method2()
{
Console.WriteLine("Méthode 2 exécutée");
}
static void Method3()
{
Console.WriteLine("Méthode 3 exécutée");
}
}
Dans cet exemple, les méthodes Method1
, Method2
, et Method3
sont exécutées simultanément grâce à Parallel.Invoke
. Chaque méthode affiche un message à la console. L'ordre d'exécution des méthodes peut varier à chaque exécution du programme.
Gestion de boucles parallèles
La classe Parallel fournit également des fonctionnalités avancées pour gérer les boucles parallèles. Par exemple, la méthode Parallel.ForEach
permet d'itérer sur une collection tout en exécutant les itérations en parallèle. Voici un exemple :
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
string[] names = { "Alice", "Bob", "Charlie", "Dave" };
Parallel.ForEach(names, name =>
{
Console.WriteLine("Bonjour, {0}! Thread : {1}",
name, Task.CurrentId);
});
Console.ReadLine();
}
}
Dans cet exemple, nous utilisons Parallel.ForEach
pour itérer sur un tableau de noms. Chaque nom est traité par un thread distinct, qui affiche un message de salutation contenant le nom et l'identifiant du thread en cours.
Conclusion
La classe Parallel en C# facilite la programmation parallèle en fournissant des fonctionnalités pour l'exécution simultanée de tâches. Dans cet article, nous avons exploré les bases de l'utilisation de Parallel avec des exemples de code. N'hésitez pas à expérimenter davantage avec cette classe pour exploiter pleinement les performances de votre application en utilisant le parallélisme.
Commentaires
Enregistrer un commentaire