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

Is it possible to run multithreaded application on a single core of multicore computer?

本文关键字:单核 运行 多线程 应用程序 计算机 多核 是否      更新时间:2023-10-16

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

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

提前谢谢。

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

在unix中,您可以使用taskset,但对于windows,我只知道如何从任务管理器中进行操作,这可能不适合您。

我有一个库,Java线程亲和性,它将允许您用程序设置亲和性。

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

这也将限制从该点开始的任何线程具有相同的亲和性。

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

如果您不想更改程序源,可以使用操作系统命令

在Linux上,您可以使用工具cpulimit。更多详情点击此处

在Windows上,可以使用/AFFINITY参数作为启动命令。更多详细信息,请点击此处