在多核 Windows PC 上,为什么单个进程仅偶尔使用所有核心?

在多核 Windows PC 上,为什么单个进程仅偶尔使用所有核心?

多年来,我一直认为单个进程最多只能使用 CPU 的一个核心,但最近我发现了两个单个进程使用了​​多核 Windows 系统的所有核心的例子。

其中一个对于大多数人来说很容易测试:http://fitgirl-repacks.site/donate-by-mining/

关闭浏览器的多进程功能后,网页上的“CPU线程”设置仍然有效,你可以看到单个浏览器进程占用了所有CPU核心。

为什么这种情况只是有时发生,而大多数时候都不会发生(许多程序会产生多个进程来尝试利用多处理器系统)?

答案1

可以编写一个程序来利用多个线程,从而允许它们使用多个核心。

程序也可以将自身拆分为不同的进程,每个都有一个或多个线程来工作。

多线程和多进程之间存在非常微妙但真实的差异。禁用多进程功能不会禁用已经存在的多线程。

最近的浏览器更新允许多进程功能,通过将不同页面的线程分离到各自的进程中,增强了安全性和崩溃容忍度,每个进程仍然可以有多个线程,所有线程都独立工作。

答案2

单个进程可以使用多个核心的方式有多种。

最明显的方法是创建多个执行线程。每个线程都可以在一个核心上进行调度,以便单个进程直接使用多个核心。

但是,单个进程还可以通过其他方式使用多个核心。例如,进程可以从内部能够使用多个核心的操作系统服务发出请求。例如,执行大量磁盘 I/O 的进程可能在一个核心上运行,而另一个核心则运行操作系统代码,完成该进程发起的磁盘 I/O 操作之一。网络和图形操作也可以通过使用多个核心的方式在内部实现。

相关内容