我想知道,当我运行Parallel.For/ForEach循环时将使用多少个线程。Parallel.For(Foreach)将创建多少个线程?默认MaxDegreeOfParallelism?
我发现,它可以通过MaxDegreeOfParallelism选项进行更改。 MSDN上
MaxDegreeOfParallelism帮助说(link):
默认情况下,和foreach将利用然而,许多线程 底层调度程序提供,所以从 改变MaxDegreeOfParallelism默认的唯一限制多少并发任务会使用。
但我不知道调度程序提供了多少个线程。
我如何知道?
我可以用9999999运行循环测试它,但是这个测试会显示我的号码,但不是确定这个号码的规则。后来
编辑/添加:
我用Google搜索 “sheduler最大并发”,我发现(在MSDN - link),即TashSheduler
类有MaximumConcurrencyLevel
属性,:
返回一个整数表示最大并发级别。 默认调度程序返回Int32.MaxValue。
TaskSheduler类用作这些并行循环的“底层调度程序”吗?
有趣的是,它返回常量'2147483647' ..而不是'int32.MaxValue'。 –