1

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

例如,如果我在将创建 4 个线程的计算机 A 中编译,然后在另一台具有不同内核数的计算机 B 中执行 .exe,它将创建 4 个线程还是线程数将取决于计算机B的核心?

4

1 回答 1

1

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

它也不直接取决于内核的数量:而是取决于TaskScheduler给它的线程数。并且默认TaskScheduler为它提供与内核一样多的线程ThreadPool,只要没有其他人使用ThreadPool.

于 2016-04-24T13:44:35.577 回答