是否可以在多核计算机的单核上运行多线程应用程序?

2022-09-03 07:52:05

我有一个应用程序,我需要运行多线程,但我希望它只使用计算机的一个核心,就像我的计算机有单核一样(我知道多线程应用程序在具有单核的计算机上的行为),尽管它不是。

此应用程序将部署在客户计算机(Windows XP和7)上,我不希望我的应用程序使用多个内核。这能做到吗?它取决于编程语言吗?还是所有的线程管理都留给操作系统?

提前致谢。


答案 1

您可以将整个程序的关联设置为仅绑定到一个 CPU。

在unix中,你可以使用,但对于Windows,我只知道如何从任务管理器中做到这一点,这可能不适合你。taskset

我有一个库,Java Thread Affinity,它将允许您以编程方式设置关联性。

AffinitySupport.setAffinity(1); // only run on cpu 0.

这还会将从该点启动的任何线程限制为相同的关联。

您可以添加一个带有 main() 的类,该类设置相关性并调用普通的 main(),从而允许您在不更改任何现有代码的情况下添加此类。


答案 2

如果不想更改程序源,可以使用 OS 命令

在Linux上,您可以使用该工具。更多详细信息 请点击此处此处cpulimit

在 Windows 上,可以使用 /AFFINITY 参数来启动命令。更多详情请点击这里