在.NET 3.5中使用Parallel.Foreach和分区程序

时间:2014-09-11 15:10:27

标签: .net task-parallel-library parallel.foreach partitioner

我正在为支持.NET 3.5的Unity GameEngine构建自定义插件并且能够使用TPL我安装了Reactive Extensions v1.0.2856.0(我认为是包含TPL的最后一个)。所以,在一个脚本中,我有一个大约65000个交互的循环。例如,我使用Parallel.Foreach循环没有问题,但问题是,使用默认分区程序时,由于迭代次数较少而实际上循环速度变慢,因此工作不均匀分布。

所以我的问题是: 有没有办法创建一个分区程序,它可以为我的2个CPU内核提供大约一半的迭代次数。

1 个答案:

答案 0 :(得分:0)

使用ParallelOptions.MaxDegreeOfParallelism

var options = new ParallelOptions {MaxDegreeOfParallelism = 2};
Parallel.ForEach(list, options,
    item =>
    {
        // work})
    });