让我们说有一台配备8核CPU的机器。
我正在使用标准pthread_create(...)
函数创建2个posix线程。
据我所知,没有任何保证,这些线程总是由2个不同的物理核心执行,但实际上90%,将同时(或并行)运行。至少在我的情况下,我看到top
命令显示2个cpu正在运行...因此大约160-180%的CPU使用率
问题是:
当一个进程中的2个线程仅在1个物理核心上运行时,情况可能是什么?
答案 0 :(得分:0)
两种情况:
1)其他物理内核忙于处理其他内容,因此此进程只使用一个内核。这两个线程在该核心上交替运行。
2)物理核心支持使用超线程或类似的东西同时执行多个线程。其他物理内核正忙着做其他事情,因此调度程序可以做的最好的事情就是在单个物理内核中运行两个线程。