我想知道,当我运行 Parallel.For/ForEach 循环时将使用多少个线程。
我发现,它可以通过 MaxDegreeOfParallelism 选项进行更改。
MSDN 上的 MaxDegreeOfParallelism 帮助说(链接):
默认情况下,For 和 ForEach 将使用底层调度程序提供的线程数,因此从默认值更改 MaxDegreeOfParallelism 只会限制将使用多少并发任务。
但我不知道底层调度程序提供了多少线程。
我怎样才能知道呢?
我可以使用循环运行 9999999 来测试它,但是这个测试会显示数字,而不是确定该数字的规则。
稍后编辑/添加:
我搜索了“sheduler max concurrency”,我发现(在 MSDN -链接),TashSheduler
该类具有MaximumConcurrencyLevel
属性,并且:
返回一个表示最大并发级别的整数。默认调度程序返回 Int32.MaxValue。
那个 TaskSheduler 类被用作这些并行循环的“底层调度程序”?