2

EnumerablePartitionerOptions.NoBuffering如果我有一个对象集合,每个对象的过程都需要大量时间,那么根本不使用和不使用 有什么区别Partitioner

http://msdn.microsoft.com/en-us/library/system.collections.concurrent.enumerablepartitioneroptions.aspx

EnumerablePartitionerOptions.NoBuffering:

创建一个分区器,它一次从可枚举的源中获取项目,并且不使用可以由多个线程更有效地访问的中间存储。此选项提供对低延迟的支持(项目将在源可用时立即处理)并为项目之间的依赖关系提供部分支持(线程不能死锁等待线程本身负责处理的项目)。

谢谢你。

更新:谁更快?为什么?

IEnumerable<int> Numbers1 = Enumerable.Range(1, 100);
Parallel.ForEach(Numbers1, (number1) => VeryExpensiveMethod(number1));
            //
            //
Partitioner<int> Numbers2 = Partitioner.Create(Enumerable.Range(1, 100),   EnumerablePartitionerOptions.NoBuffering);
Parallel.ForEach(Numbers2, (number1) => VeryExpensiveMethod(number1));
4

0 回答 0