在下面的并行 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 可能会也可能不会提供确定性分割。
四处寻找也没有多大帮助。可以预测或计算吗?