Рассмотрим следующий пример кода, который создает перечислимую коллекцию целых чисел и обрабатывает ее параллельно:
using System.Collections.Generic;
using System.Threading.Tasks;
public class Program
{
public static void Main()
{
Parallel.ForEach(CreateItems(100), item => ProcessItem(item));
}
private static IEnumerable<int> CreateItems(int count)
{
for (int i = 0; i < count; i++)
{
yield return i;
}
}
private static void ProcessItem(int item)
{
// Do something
}
}
Гарантируется ли, что рабочие потоки, сгенерированные Parallel.ForEach()
, получают разные элементы, или требуется какой-то механизм блокировки для увеличения и возврата i
?
Enumerable.Range()
помогает мне с параллельной обработкойIEnumerable
? - person Good Night Nerd Pride   schedule 10.06.2013Parallel.For()
. - person svick   schedule 10.06.2013