何时在具有多核 CPU 机器的 1 个物理 CPU 内核上执行 2 个线程?
When 2 threads would be executed on a 1 physical CPU core with a multi-core CPU machine?
假设有一台 8 核机器 CPU。
我正在使用标准 pthread_create(...)
函数创建 2 个 posix 线程。
据我所知,没有任何保证这些线程总是由 2 个不同的物理内核执行,但实际上在 90% 中它们 将 运行 同时(或在平行下)。至少在我的案例中,我看到 top
命令显示 2 cpu 是 运行ning ... 因此大约 160-180% CPU 使用率
问题是:
当单个进程中的 2 个线程 运行仅在 1 个物理内核上运行时会出现什么情况?
两种情况:
1) 其他物理核心正忙于做其他事情,所以这个进程只使用了一个核心。两个线程 运行 在该核心上交替。
2) 物理内核支持使用超线程或类似技术同时执行多个线程。其他物理核心正忙于做其他事情,因此调度程序可以做的最好的事情是 运行 两个线程都在一个物理核心中。
假设有一台 8 核机器 CPU。
我正在使用标准 pthread_create(...)
函数创建 2 个 posix 线程。
据我所知,没有任何保证这些线程总是由 2 个不同的物理内核执行,但实际上在 90% 中它们 将 运行 同时(或在平行下)。至少在我的案例中,我看到 top
命令显示 2 cpu 是 运行ning ... 因此大约 160-180% CPU 使用率
问题是:
当单个进程中的 2 个线程 运行仅在 1 个物理内核上运行时会出现什么情况?
两种情况:
1) 其他物理核心正忙于做其他事情,所以这个进程只使用了一个核心。两个线程 运行 在该核心上交替。
2) 物理内核支持使用超线程或类似技术同时执行多个线程。其他物理核心正忙于做其他事情,因此调度程序可以做的最好的事情是 运行 两个线程都在一个物理核心中。