我正在学习线程。我将 C# 与 .NET Framework 4.5.2 和 Windows 10 x64 一起使用。
我写了一个简单的程序,有两个线程,每个线程有一个大循环:
class Program
{
static void Main(string[] args)
{
Thread t = new Thread(foo);
t.Start();
for (int i = 0; i < 99999999; i++)
{
Console.WriteLine("x");
}
}
static void foo()
{
for (int i = 0; i < 99999999; i++)
{
Console.WriteLine("y");
}
}
}
当我运行程序的最终版本时,在“资源监视器”中我读到它正在运行两个以上的线程。
这让我明白我们无法真正控制我们的应用程序将如何执行,只能说“我想同时运行 X 和 Y”,但没有严格的(真实的)控制将要创建的线程数。那是对的吗?
我想知道这种行为的解释。
最佳答案
当您在没有附加调试器且没有创建任何额外线程的情况下运行您的应用程序时,您至少有三个线程。
请记住,垃圾收集器在单独的线程上工作。此外,终结器在单独的线程上工作。主线程在此讨论中是微不足道的。
当您看到更多线程时,您需要记住,在使用 Visual Studio 进行调试时,有与调试相关的线程在运行。
为了测试它,创建一个像下面这样的简单程序:
class Program
{
static void Main(string[] args)
{
Console.ReadKey();
}
}
构建您的应用程序,并使用可执行文件(未附加 Visual Studio 调试器)运行它,您会在资源监视器中看到恰好 3 个线程。
关于c# - "Resource Monitor"向我展示了比我在程序中编写的两个线程更多的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38555182/