2014-04-17 38 views
16

我有我需要运行多线程的应用程序,但我想它使用的计算机只有一个核心,就好像我的电脑有单核(我知道的多线程应用程序的单核心的计算机上的行为),虽然它不是。是否可以在单核多核计算机上运行多线程应用程序?

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

在此先感谢。

+3

上的所有线程一个核心,集线亲和力。 –

+0

@brianbeuning会确保NO线程在另一个核心上运行吗?或者它只是设置偏好? – Theolodis

+0

@Theolodis答案可能取决于操作系统,但对于Linux和Windows的答案似乎不仅仅是一个偏好更强。 –

回答

4

您可以设置整个程序的亲和力结合只是一个CPU。

在UNIX中,您可以使用taskset但窗户,我只知道如何从这些可能不适合你的任务管理器做到这一点。

我有一个图书馆,Java Thread Affinity,让您以编程设定的亲和力。

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

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

你可以用一个main(),其中规定的亲和力,并呼吁增加一个类你的正常的main()允许您添加这个不改变任何现有的代码。

+0

在Windows上,过程级API是SetProcessAffinityMask()。 –

3

如果你不想改变你的节目源,你可以使用OS命令

在Linux上,你可以使用该工具cpulimit。更多详细信息herehere

在Windows上,您可以对启动命令使用/ AFFINITY参数。更多细节here

相关问题