Sommaire

Le parallélisme et la classe Parallel

1. Introduction

Dans l’exemple précédent, on aborde en quelque sorte le parallélisme, car deux tâches semblent s’exécuter en même temps. La plate-forme .NET offre la classe statique Parralel stockée dans l’espace de noms System.Threading.Tasks pour gérer les tâches concurrentielles avec plus d’efficacité, mais également avec plus de clarté.

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
      ExternalThreading = true)]  
public static class Parallel

La classe statique envisage les tâches à effectuer en parallèle comme une collection que l’on peut itérer. Elle est surtout composée de surcharges de méthodes For et ForEach.

public static ParallelLoopResult For<TLocal>(int fromInclusive,  
int toExclusive, Func<TLocal> localInit, Func<int,  
ParallelLoopState, TLocal, TLocal> body, Action<TLocal>  
localFinally);

public static ParallelLoopResult  
ForEach<TSource>(Partitioner<TSource> source, Action<TSource,  
ParallelLoopState> body);  
  
public static void Invoke(ParallelOptions parallelOptions, params  
Action[] actions);

2. Quelques exemples

a. Avec For

D’abord, on lance onze threads de durées différentes grâce à une des méthodes For de la classe, c’est-à-dire via l’usage d’une boucle ...