Я немного запутался Parallel.ForEach
.
Что это такое Parallel.ForEach
и чем оно конкретно занимается?
Пожалуйста, не ссылайтесь ни на одну ссылку MSDN.
Вот простой пример:
string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);
foreach (string line in list_lines)
{
//My Stuff
}
Как я могу переписать этот пример с Parallel.ForEach
?
На это можно было бы ответить здесь stackoverflow.com/questions/3789998/…
—
Ujjwal Manandhar
@UjjwalManandhar На самом деле все по-другому, так как он спрашивает о разнице между
—
Рид Копси
Parallel
классом и использованием PLINQ.
Другие ответили, как вы можете переписать. Так что же это делает? Он выполняет «действие» на каждый элемент в коллекции, как обычно
—
Джепп Стиг Нильсен
foreach
. Разница в том, что параллельная версия может выполнять много «действий» одновременно. В большинстве случаев (в зависимости от того, на каком компьютере выполняется код, насколько он загружен и т.д.) это будет быстрее, и это самое важное преимущество. Обратите внимание, что когда вы делаете это параллельно, вы не можете знать, в каком порядке обрабатываются элементы. С обычным (серийным) foreach
вам гарантировано, что lines[0]
будет первым, потом lines[1]
и так далее.
@JeppeStigNielsen Это не всегда будет быстрее, поскольку при параллельном выполнении работы возникают значительные накладные расходы. Это зависит от размера коллекции, с которой вы работаете, и действия внутри. Правильнее всего будет измерить разницу между использованием Parallel.ForEach () и foreach (). Во многих случаях обычный foreach () работает быстрее.
—
Дейв Блэк
@DaveBlack Конечно. В каждом случае нужно будет измерить , быстрее это или медленнее. Я просто пытался описать распараллеливание в целом.
—
Джеппе Стиг Нильсен