gun*_*yim 16 c++ java multithreading
我有一个应用程序,我需要运行多线程但我希望它只使用计算机的一个核心,好像我的计算机有单核(我知道多核应用程序在单核计算机上的行为),虽然它不是.
该应用程序将部署在客户计算机(Windows XP和7)上,我不希望我的应用程序使用多个核心.可以这样做吗?它取决于编程语言吗?或者所有线程管理都留给操作系统?
提前致谢.
您可以将整个程序的亲和力设置为仅绑定到一个CPU。
在unix中你可以使用taskset,但对于windows我只知道如何从任务管理器中做到这一点,这可能不适合你。
我有一个Java Thread Affinity库,它允许您以编程方式设置亲和力。
AffinitySupport.setAffinity(1); // only run on cpu 0.
Run Code Online (Sandbox Code Playgroud)
这也将限制从该点启动的任何线程具有相同的亲和力。
您可以添加一个带有 main() 的类,该类设置亲和力并调用普通的 main() ,允许您在不更改任何现有代码的情况下添加它。