Parallel.For线程数是在运行时还是在编译时确定的?

时间:2015-10-26 17:39:48

标签: c# multithreading parallel-processing parallel.foreach parallel.for

我读过Parallel.For和Parallel.Foreach创建的线程数取决于计算机中的核心数,但这是在执行.exe期间决定/计算的数量,还是在程序编译时?

例如,如果我在计算机A中编译将创建4个线程,但随后在具有不同核心数的另一台计算机B中执行.exe,它将创建4个线程或将依赖于的线程数计算机B的核心数量?

1 个答案:

答案 0 :(得分:1)

Parallel.For()中没有魔法,它只是一个方法调用,因此它编译为调用该方法的IL。这意味着它在编译时无法确定它使用的线程数。

它也不直接依赖于核心数量:相反,它取决于TaskScheduler给出的线程数。默认TaskSchedulerThreadPool提供与核心一样多的线程,只要没有其他线程使用ThreadPool