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

gun*_*yim 16 c++ java multithreading

我有一个应用程序,我需要运行多线程但我希望它只使用计算机的一个核心,好像我的计算机有单核(我知道多核应用程序在单核计算机上的行为),虽然它不是.

该应用程序将部署在客户计算机(Windows XP和7)上,我不希望我的应用程序使用多个核心.可以这样做吗?它取决于编程语言吗?或者所有线程管理都留给操作系统?

提前致谢.

Pet*_*rey 4

您可以将整个程序的亲和力设置为仅绑定到一个CPU。

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

我有一个Java Thread Affinity库,它允许您以编程方式设置亲和力。

AffinitySupport.setAffinity(1); // only run on cpu 0.
Run Code Online (Sandbox Code Playgroud)

这也将限制从该点启动的任何线程具有相同的亲和力。

您可以添加一个带有 main() 的类,该类设置亲和力并调用普通的 main() ,允许您在不更改任何现有代码的情况下添加它。