平行的.对于线程数是在运行时或编译时决定的

本文关键字:运行时 编译 决定 于线程 线程 | 更新日期: 2023-09-27 18:19:15

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

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

平行的.对于线程数是在运行时或编译时决定的

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

它也不直接取决于内核的数量:相反,它取决于TaskScheduler提供给它的线程数。默认的TaskSchedulerThreadPool提供了和内核一样多的线程,只要没有其他东西在使用ThreadPool