C# Как лучше делать параллельный перебор List?
List<int> list = new List<int> { 1,2,3,4,5 };
list.AsParallel().ForAll(x => Console.WriteLine(x));
или
List<int> list = new List<int> { 1,2,3,4,5 };
Parallel.ForEach(list, i => { Console.WriteLine(i); });
Не имеет решающего значения.
А для данного примера - вообще никакого, поскольку консоль будет строить все запросы на вывод в одну очередь. По сравнению с обычным перебором ты только потеряешь в производительности из-за дополнительных расходов на обслуживание потоков.
Вообще конечно предпочтительнее использовать Parallel.ForEach, потому что это версия foreach для распараллеливания IEnumerable. В первом же случае вызов AsParallel() без вызова дальше WithDegreeOfParallelism() не имеет смысла, т.к. "движок" PLINQ в итоге оптимизирует это все в последовательную обработку, что бы избежать расходов на обслуживание потоков (как вам уже выше написали). Во втором случае конечно тоже лучше задавать опции распараллеливания. Так что в данном виде для обоих случаев действительно разницы не будет никакой.
ForAll