216 votes

Comment utiliser la boucle Parallel.ForEach au lieu de la boucle Foreach classique ? (Informations sur Parallel.ForEach)

Je suis un peu confus à propos Parallel.ForEach .
Qu'est-ce que Parallel.ForEach et que fait-il exactement ?
Veuillez ne pas faire référence à un lien MSDN.

Voici un exemple simple :

string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);

foreach (string line in list_lines)
{
    //My Stuff
}

Comment réécrire cet exemple avec Parallel.ForEach ?

0 votes

On a peut-être répondu à cette question ici stackoverflow.com/questions/3789998/

2 votes

@UjjwalManandhar C'est en fait assez différent, puisque la question porte sur la différence entre le Parallel et en utilisant PLINQ.

20 votes

D'autres ont répondu comment vous pouvez réécrire. Alors, que fait-il ? Il effectue une "action" sur chaque élément de la collection, tout comme une action normale foreach . La différence est que la version parallèle peut effectuer plusieurs "actions" en même temps. Dans la plupart des cas (en fonction de l'ordinateur qui exécute le code, de son niveau d'activité et d'autres facteurs), elle sera plus rapide, et c'est l'avantage le plus important. Notez que lorsque vous le faites en parallèle, vous ne pouvez pas savoir dans quelle commander les articles sont traités. Avec un habituel (série) foreach vous avez la garantie que lines[0] vient en premier, puis lines[1] et ainsi de suite.

2voto

Je voudrais ajouter des options parallèles. Si vous ne le mentionnez pas, par défaut toute la RAM sera utilisée pour cela, ce qui peut vous poser des problèmes en production. Il est donc préférable d'ajouter le degré maximum de parallélisme dans le code.

Parallel.ForEach(list_lines, new ParallelOptions { MaxDegreeOfParallelism = 2 }, line =>
{

});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X