Traiter un foreach en parallèle

Description

Faire des boucles ForEach, c'est pratique. Mais si on a beaucoup d'éléments à traiter, pourquoi ne pas répartir la charge sur tous les processeurs du système ?

Ce petit bout de code permet d'exécuter du code sur chaque élément d'une collection, en parallèle sur chaque processeur du système.

Source / Exemple :


//On a une collection d'objets
IEnumerable<MaClass> collection;

//L'action à réaliser
Action<MaClass> action = delegate(MaClass item)
{
    Console.WriteLine(item.ToString());
}

//L'appel de la boucle
try
{
    Parallel.ForEach<MaClass>(collection, action);
}
catch(ParallelException ex)
{
    //On peut récupérer pour chaque item l'exception dans son traitement
    // via ex.Exceptions
}

Conclusion :


C'est un peu un clone de Microsoft Parallel Extensions, mais le but était didactique, et aussi parce que je n'ai pas de dépendance au framework 3.0.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.