2011-03-29 99 views
5

我正在考慮開發一個應用程序,它將在六核心機器上運行六個異步任務,每個核心都有一個任務。有沒有辦法將進程鎖定到CPU?

但是是否有可能將任務鎖定到自己的核心?

這個想法是讓他們主要靠自己運行,但有時需要通過共享內存區域進行通信。但是,我希望這些任務儘可能不受干擾地運行。

+1

難道你真的相信你會做的更好比決定每個任務應運行哪個cpu的調度程序更重要? :-) – 2011-03-29 22:52:28

+0

@R ..,不知道,但我有一個很好的預感。原因是有6件事情要做,而且它們應該儘可能不中斷地異步運行。 – 2011-03-30 05:54:00

回答

7

你正在尋找的概念被稱爲「線程親和力」。它是如何實現的以及要求它的接口是特定於操作系統的。

在Linux下,嘗試sched_setaffinity()。 glibc也可能提供pthread_attr_setaffinity_np()。

5
taskset -c cpunum yourprocess 

你想要做什麼關聯。 可以改爲提供PID,這樣就可以將單個線程設置爲cpu。如果你想改變你自己的程序的CPU親和力,使用sched_setaffinity()

0

只是爲了記錄,另一種方法,不涉及編程: 打開任務管理器,轉到進程選項卡,右鍵單擊您的流程,並選擇設置親和力......

+3

這個問題被標記爲Linux - 你不能假設甚至連一個鼠標連接,更不用說一個完整的GUI與「任務管理器」 – Mat 2011-03-29 22:21:03

+0

@Mat你是完全正確的。無論如何,這可能會幫助其他人。 – Adi 2011-03-29 22:26:33

相關問題