我正在BlockingCollection
尝试更好地理解它们,但我很难理解为什么我的代码在我使用Parallel.For
我只是给它加了一个数字(制片人?):
var blockingCollection = new BlockingCollection<long>();
Task.Factory.StartNew(() =>
{
while (count <= 10000)
{
blockingCollection.Add(count);
count++;
}
});
然后我正在尝试处理(消费者?):
Parallel.For(0, 5, x =>
{
foreach (long value in blockingCollection.GetConsumingEnumerable())
{
total[x] += 1;
Console.WriteLine("Worker {0}: {1}", x, value);
}
});
但是当它处理完所有的数字时,它就挂在那里了?我究竟做错了什么?
另外,当我将 Parallel.For 设置为 5 时,这是否意味着它正在 5 个单独的线程上处理数据?