我想知道在处理器内核上如何执行具有更多线程数的多线程程序。例如,我的程序有12个线程,我在intel core-i5机器上运行它。它有四个CPU。每个核心会运行3个线程吗?我很困惑,因为我看到有一个在4核机器上运行30个线程的程序。
由于
答案 0 :(得分:7)
核心负责执行线程周期。您拥有的核心越多,您可以同时运行的线程越多。每个核心一次只能执行一条指令,但速度太快,好像您同时运行多个线程。
Intel Processors
支持Hyper Threading启用单核支持多个线程,因为operating system
每个物理核心的逻辑核心数量是其两倍。例如,Core i3只是一个双核,实际上可以为每个核心提供两个线程,即总共四个线程可以同时运行。但是,即使Core i5 processors
是四核,由于它们不支持超线程(i5-661除外),它们可以同时服务的线程数大约等于它们的{{1同行。
答案 1 :(得分:4)
每个核心都可以同时执行一个线程。因此,如果有30个线程和4个核心,则26个线程将等待上下文切换以执行。类似于,线程1-4运行200ms然后5-8运行200 ms等等
答案 2 :(得分:0)
处理器内核能够一次执行一个线程。在四核中,同时执行4个线程。并非所有用户空间线程都同时执行,内核线程也运行以调度下一个线程或执行其他一些内核任务。