多线程运行可以在多核处理器中并行(不是上下文切换)

Can multiple threads run in parallel (not context switching) in multi core processor

我一直在读到,如果有 2 个线程和 2 个内核,那么如果每个线程分配给不同的内核,它们将能够 运行 并发或完全相同。让我们考虑 2 个线程 T1 和 T2,每个线程 运行 时间为 10 秒。

先考虑单核:

如果这 2 个线程要 运行 在单个内核中,它们将通过上下文切换 运行ning,这当然不是并行执行而是顺序执行,线程调度程序将选择一个并为 运行 分配一个插槽。所以在单核中,不可能T1同时运行ning at 10:00:00,T2也同时运行ning at 10:00:00。所以这里 运行 两个线程的时间都是 20sec

现在考虑多核:

假设 T1 在 10:00:00 上午 运行 核心 1 上开始 那么 T2 是否也可能在 10:00:00 上午 10:00:00 在核心 2 上开始 运行?

如果是,这仅仅意味着这里 运行 时间减半 - 所以 运行 多核上两个线程的总时间是 10 秒? 我非常怀疑这一点,但这就是我正在阅读的内容,请澄清

是的,你是对的,多个内核可以同时 运行 个线程,即如果我们有多个内核,则可以并行执行多个线程。 因此,在您的情况下,T1 和 T2 运行 可能会同时发生,具体取决于调度程序。

虽然在单核中,因为它一次只能运行个线程,它必须停止处理第一个线程给第二个线程机会,在给线程T2机会之前,它节省了T1 的状态并切换到 T2 这实际上是上下文切换。

您可以通过 运行 启动 2 个或更多线程的简单程序来检查这一点,看看它们是否打印出几乎完全相似的时间戳。