How many threads Parallel.For(Foreach) will create? Default MaxDegreeOfParallelism?

三世轮回 提交于 2020-01-19 05:40:29

问题


I want to know, how many threads will be used when I run Parallel.For/ForEach loop.

I found, that it can be changed by MaxDegreeOfParallelism option.

MaxDegreeOfParallelism help on MSDN says (link):

By default, For and ForEach will utilize however many threads the underlying scheduler provides, so changing MaxDegreeOfParallelism from the default only limits how many concurrent tasks will be used.

But I don't know how many threads underlying scheduler provides.

How can I find out that?

I could test it with loop with 9999999 runs, however this test will show me number, but not the rule that determine that number.

Edit/added later:

I googled for "sheduler max concurrency", and I found (at MSDN - link), that TashSheduler class has MaximumConcurrencyLevel property, and:

Returns an integer that represents the maximum concurrency level. The default scheduler returns Int32.MaxValue.

That TaskSheduler class is used as "underlying scheduler" for these parallel loops?


回答1:


According to MSDN:

The default scheduler for Task Parallel Library and PLINQ uses the .NET Framework ThreadPool to queue and execute work. In the .NET Framework 4, the ThreadPool uses the information that is provided by the System.Threading.Tasks.Task type to efficiently support the fine-grained parallelism (short-lived units of work) that parallel tasks and queries often represent.

Looking at the documentation of ThreadPool, it says:

There is one thread pool per process. Beginning with the .NET Framework 4, the default size of the thread pool for a process depends on several factors, such as the size of the virtual address space. A process can call the GetMaxThreads method to determine the number of threads. The number of threads in the thread pool can be changed by using the SetMaxThreads method.



来源:https://stackoverflow.com/questions/18943703/how-many-threads-parallel-forforeach-will-create-default-maxdegreeofparalleli

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!