我有我需要运行多线程的应用程序,但我想它使用的计算机只有一个核心,就好像我的电脑有单核(我知道的多线程应用程序的单核心的计算机上的行为),虽然它不是。是否可以在单核多核计算机上运行多线程应用程序?
此应用程序将部署在客户计算机上(Windows XP & 7),我不希望我的应用程序使用多个核心。这可以做到吗?它依赖于编程语言吗?或者所有的线程管理都留给了操作系统?
在此先感谢。
我有我需要运行多线程的应用程序,但我想它使用的计算机只有一个核心,就好像我的电脑有单核(我知道的多线程应用程序的单核心的计算机上的行为),虽然它不是。是否可以在单核多核计算机上运行多线程应用程序?
此应用程序将部署在客户计算机上(Windows XP & 7),我不希望我的应用程序使用多个核心。这可以做到吗?它依赖于编程语言吗?或者所有的线程管理都留给了操作系统?
在此先感谢。
您可以设置整个程序的亲和力结合只是一个CPU。
在UNIX中,您可以使用taskset
但窗户,我只知道如何从这些可能不适合你的任务管理器做到这一点。
我有一个图书馆,Java Thread Affinity,让您以编程设定的亲和力。
AffinitySupport.setAffinity(1); // only run on cpu 0.
这也将限制任何线程从该点相同的亲和力开始。
你可以用一个main(),其中规定的亲和力,并呼吁增加一个类你的正常的main()允许您添加这个不改变任何现有的代码。
在Windows上,过程级API是SetProcessAffinityMask()。 –
上的所有线程一个核心,集线亲和力。 –
@brianbeuning会确保NO线程在另一个核心上运行吗?或者它只是设置偏好? – Theolodis
@Theolodis答案可能取决于操作系统,但对于Linux和Windows的答案似乎不仅仅是一个偏好更强。 –