2014-04-17 40 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

相關問題