在Parallel.For中估计段索引

时间:2012-08-24 01:58:38

标签: c# .net parallel-processing task-parallel-library

在下面的并行for循环中,是否有一种可靠的方法来确定将创建多少个线程以及哪些索引边界?

Parallel.For
(
    0,
    int.MaxValue,
    new ParallelOptions() {MaxDegreeOfParallelism=Environment.ProcessorCount},
    (i) =>
    {
        // Monitor [i] to see how the range is segmented.
    }
);

如果目标机器上的处理器数量是4并且我们使用所有4个处理器,我观察到4个段的大小大致相等,每个段大约是int.MaxValue / 4。然而,这只是观察和Parallel.For可能会也可能不会提供确定性分割。

搜索周围也没有多大帮助。有可能预测或计算这个吗?