单个处理器上可以 运行 并行的线程数

Number of threads that can run in parallel on a single processor

你好,我最近开始使用 c# 中的线程,但有一个问题我无法得到明确的答案。多个线程可以 运行 在一个单核处理器上并行,还是一次只有一个线程可以 运行?我 运行 在单核处理器上运行以下程序,我一直看到以下输出: 主叫 你好 主要完成

这让我想知道如果我 运行 在多核处理器上执行此操作,我可能会看到输出为:

主叫 主要完成 你好

static void Main(string[] args)
{
    Console.WriteLine("Main called");   
    Thread thread = new Thread(SayHello);
    thread.Start();    
    Console.WriteLine("Main done");
    Console.ReadLine();
}

public static void SayHello()
{
    Console.WriteLine("Hello");
}

取决于你如何定义它,但在你的具体情况下,我认为是的,尽管它们在一个处理器上,但它们是 运行 并行的。

我这么说是因为 I/O 不受 CPU 约束。当您的线程等待系统调用完成时,其他线程将 运行 安静。

单核处理器一次只能运行一个线程,但是操作系统使用了一种机制在多个运行ning线程之间切换,从而表现出并发性。尽管线程实际上并不是 运行 并行,但您永远无法知道一个线程何时停止而另一个线程何时启动。

即使你只有一个内核和一个处理器,多线程的许多缺陷仍然存在。

正如 Blindy 所说,有多种情况会影响哪个线程在哪个时间 运行,但您不能真正依赖它们。