线程(在Java或C++程序中)与CPU中的内核数之间有什么关系?

Dex*_* CN 4 cpu multithreading multicore

有人可以对此有所了解吗?

一个i7处理器可以运行8个线程,但我很确定我们可以在JAVA或C++程序中创建8个以上的线程(但不确定).我有一个i5处理器,在研究并发时,我创建了10个线程进行分配.我只是想了解CPU的核心评级与线程的关系.

Eri*_*c Z 9

您引用的线程称为软件线程 ; 只要您的操作系统允许,您就可以根据需要创建任意数量的软件线程.每个软件线程或代码片段都可以与其他软件并行运行.

对于每个核心,至少有一个 硬件线程,操作系统可以为其分配软件线程.例如,如果你有8个内核,那么你有一个容量为8的硬件线程池.你可以将数十或数百个软件线程映射到这个8插槽池,其中只有8个线程实际上同时在硬件上运行,即并行.

软件线程就像人们共享同一台计算机.每个人都可以使用这台计算机一段时间,不一定完成任务,然后再将其交给另一个人.

硬件线程就像人们每台人都有一台计算机.所有人都可以同时完成任务.

注意:对于i7,每个核心中有两个硬件线程(所谓的超线程).因此,您最多可以并行运行16个线程.