考虑以下代码示例,它创建一个可枚举的整数集合并并行处理它:
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
所需的锁定机制?