1

在下面的并行 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 可能会也可能不会提供确定性分割。

四处寻找也没有多大帮助。可以预测或计算吗?

4

1 回答 1

1

如果您不喜欢默认行为,您可以指定自己的分区程序。

于 2012-08-24T04:51:38.380 回答