Fadensicherheit von Yield Return mit Parallel.ForEach ()
Betrachten Sie das folgende Codebeispiel, mit dem eine enumerable Auflistung von Ganzzahlen erstellt und parallel verarbeitet wird:
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
}
}
Ist gewährleistet, dass die Worker-Threads vonParallel.ForEach()
Jeder bekommt einen anderen Gegenstand oder ist ein Verriegelungsmechanismus um das Inkrementieren und Zurückgeben voni
erforderlich?