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