在下面的并行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可能会也可能不会提供确定性分割。
搜索周围也没有多大帮助。有可能预测或计算这个吗?