Maison >développement back-end >Tutoriel C#.Net >Un exemple d'introduction à la classe Parallel de tâches parallèles C#
1. Classe Parallel
La classe Parallel fournit le parallélisme des données et des tâches
2.Paraller.For()
La méthode Paraller.For() est similaire ; L'instruction de boucle for en C# exécute également une tâche plusieurs fois. Les itérations peuvent être exécutées en parallèle à l'aide de la méthode Paraller.For(). L'ordre des itérations n'est pas défini.
Dans la méthode For(), les deux premiers paramètres sont fixes. Ces deux paramètres définissent le début et la fin de la boucle. Décrivez d'abord sa première méthode For(int,int,Action
ParallelLoopResult result = Parallel.For(0, 10, i =>{ Console.WriteLine("迭代次数:{0},任务ID:{1},线程ID:{2}", i, Task.CurrentId, Thread.CurrentThread.ManagedThreadId); Thread.Sleep(10); }); Console.WriteLine("是否完成:{0}", result.IsCompleted); Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);
Le résultat de sortie est le suivant :
Comme vous pouvez le voir, la méthode déléguée a été exécuté 10 fois, la commande n'est pas non plus garantie. Mais aucune donnée n'est sortie pour l'itération la plus basse, car elle renvoie l'entier de l'itération la plus basse qui appelle l'instruction Break. Nous n'avons pas de pause ici. Si vous devez interrompre la méthode For() au début de l'exécution, vous pouvez utiliser ParallelLoopState pour l'implémenter, For(int,int,Action
ParallelLoopResult result = Parallel.For(0, 10, (i, state) =>{ Console.WriteLine("迭代次数:{0},任务ID:{1},线程ID:{2}", i, Task.CurrentId, Thread.CurrentThread.ManagedThreadId); Thread.Sleep(10);if (i > 5) state.Break(); }); Console.WriteLine("是否完成:{0}", result.IsCompleted); Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);
Le résultat de sortie est le suivant :
3. 🎜 >
La méthode Paraller.ForEach() parcourt la collection qui implémente IEnumerable. Sa méthode est similaire à l'instruction foreach, mais elle parcourt de manière asynchrone et l'ordre de parcours n'est pas déterminé ici. Décrivez d'abord sa première méthode, Paraller.ForEachstring[] data = { "str1", "str2", "str3" }; ParallelLoopResult result = Parallel.ForEach<string>(data, str => { Console.WriteLine(str); }); Console.WriteLine("是否完成:{0}", result.IsCompleted); Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);
string[] data = { "str1", "str2", "str3", "str4", "str5" }; ParallelLoopResult result = Parallel.ForEach<string>(data, (str, state, i) => { Console.WriteLine("迭代次数:{0},{1}", i, str); if (i > 3) state.Break(); }); Console.WriteLine("是否完成:{0}", result.IsCompleted); Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);
Parallel.Invoke(() =>{ Thread.Sleep(100); Console.WriteLine("method1"); }, () =>{ Thread.Sleep(10); Console.WriteLine("method2"); });
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!