平行的.对于线程数是在运行时或编译时决定的
本文关键字:运行时 编译 决定 于线程 线程 | 更新日期: 2023-09-27 18:19:15
我读取了Parallel创建的线程数。For和Parallel。Foreach取决于计算机中的核心数量,但是这个数字是在执行.exe期间决定/计算的,还是在程序编译时决定的?
例如,如果我在计算机A中编译将创建4个线程,但然后在另一台具有不同核数的计算机B中执行。exe,它会创建4个线程还是线程数将取决于计算机B的核数?
在Parallel.For()
中没有魔法,它只是一个方法调用,所以它编译为调用那个方法的IL。这意味着它使用的线程数不能在编译时决定。
它也不直接取决于内核的数量:相反,它取决于TaskScheduler
提供给它的线程数。默认的TaskScheduler
给ThreadPool
提供了和内核一样多的线程,只要没有其他东西在使用ThreadPool
。