【问题标题】:Parallel.For number of threads is decided runtime or when compiled?Parallel.For 线程数是在运行时还是在编译时决定的?
【发布时间】:2015-10-26 17:39:48
【问题描述】:

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

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-06-26
    • 2013-08-29
    • 2013-09-17
    • 1970-01-01
    • 2021-02-26
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    相关资源
    最近更新 更多