是否可以在多核计算机的单核上运行多线程应用程序?
2022-09-03 07:52:05
我有一个应用程序,我需要运行多线程,但我希望它只使用计算机的一个核心,就像我的计算机有单核一样(我知道多线程应用程序在具有单核的计算机上的行为),尽管它不是。
此应用程序将部署在客户计算机(Windows XP和7)上,我不希望我的应用程序使用多个内核。这能做到吗?它取决于编程语言吗?还是所有的线程管理都留给操作系统?
提前致谢。
我有一个应用程序,我需要运行多线程,但我希望它只使用计算机的一个核心,就像我的计算机有单核一样(我知道多线程应用程序在具有单核的计算机上的行为),尽管它不是。
此应用程序将部署在客户计算机(Windows XP和7)上,我不希望我的应用程序使用多个内核。这能做到吗?它取决于编程语言吗?还是所有的线程管理都留给操作系统?
提前致谢。
您可以将整个程序的关联设置为仅绑定到一个 CPU。
在unix中,你可以使用,但对于Windows,我只知道如何从任务管理器中做到这一点,这可能不适合你。taskset
我有一个库,Java Thread Affinity,它将允许您以编程方式设置关联性。
AffinitySupport.setAffinity(1); // only run on cpu 0.
这还会将从该点启动的任何线程限制为相同的关联。
您可以添加一个带有 main() 的类,该类设置相关性并调用普通的 main(),从而允许您在不更改任何现有代码的情况下添加此类。