gpt4 book ai didi

java - 图中的 "CPU"是否代表 "core"?

转载 作者:行者123 更新时间:2023-12-01 19:23:10 25 4
gpt4 key购买 nike

这张图展示了Java程序如何使用内核线程。我的困惑是图中的“CPU”是否代表“核心”,也就是说,如果我的cpu有4个核心,支持4个线程,那么我在程序中创建的java线程最终可以匹配到这4个核心,并且每次每个核心中只有 1 个正在运行的线程。另外,如果cpu有4个核心,支持8个线程,是不是意味着每个核心每次都会有2个运行线程呢? enter image description here

最佳答案

在这张特定的图片中,“CPU”确实意味着“核心”。然而,这张图被简化了。

常规 CPU 支持每个核心一次运行 1 个线程。

所有现代 CPU 都有 Hyperthreading ,这意味着每个核心一次“支持”2 个线程。从这个特殊意义上来说,4个核心可以支持8个线程。我将“支持”放在引号中,因为该实现并不是真正同时运行 2 个东西 - 那只是 2 个核心。相反,它所做的是交错 2 个线程,但有 2 组寄存器,因此在 2 个线程之间切换时不必从内存加载寄存器。

您所看到的图片根本没有考虑超线程,并且有充分的理由 - 它试图教您有关线程的知识,而不是 CPU 实现。

请注意,如果您有 1、4 或 60,000 个线程,这并不意味着它们将在内核之间平均分配。一个线程可以在不同的时间运行在不同的核心上,运行时(Java)可以设置affinity对于某些线程。

这意味着您的所有线程可能会在 1 个内核上运行,或者每个线程在不同的内核上运行,或者任何其他组合。

关于java - 图中的 "CPU"是否代表 "core"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59336798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com