"Hello world"应用程序在.NET4.0中使用4个线程,但在.NET2.0中使用3个线程

use*_*346 6 .net c# multithreading .net-4.0

当运行最基本的"Hello,World!"时 为.NET2.0编译的应用程序,您应该看到3个线程(Main,GC和Finalizer).但是,对于.NET4.0版本,使用相同的基本应用程序,该数字最多可达4.有谁知道额外的线程是什么?

qua*_*dev 0

从 .NET4 开始,线程池默认保留空闲线程(正如MSDN 指出的那样)。我找不到它们的数量是如何指定的(尽管您可以使用 SetMinThreads 更改它),它可能不是。

这篇dotNetPerls文章表明,它还取决于机器上的核心数量(这是有道理的)。

您可以在您的机器/特定程序上进行测试,以使用两个 CLR 打印 ThreadPool.GetMinThreads()。