2011-03-18 76 views
2

我正在分析一些.net桌面應用程序。我發現,代碼:多核過程機器上的奇怪負載平衡

if (System.Environment.ProcessorCount > 1) 
{ 
    Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High; 
    Process.GetCurrentProcess().ProcessorAffinity = new IntPtr(2); 
} 
else 
{ 
    Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.AboveNormal; 
} 

Process.GetCurrentProcess().PriorityBoostEnabled = true; 

我都推出機上該應用具有多核心(4)處理器: enter image description here

正如我們看到的應用程序只加載第二核心(見代碼),但同時我也無法在我的電腦上做任何事情,即使3核心處於閒置狀態。

什麼是happing? 運行使用特定內核的應用程序是否有意義?

ADDED

有其他的應用(2),可容納其餘的處理器時間。它工作的優先級高,我不能改變它的設置。所以這個應用程序應該與那個應用程序競爭。

+2

我不知道你觀察到的問題。但是一般來說,計算密集的線程/程序應該以正常或更低的優先級運行,並且永遠不會處於更高的優先級。高度優先考慮的是那些需要定期運行/低延遲的廉價產品。 – CodesInChaos 2011-03-18 13:39:38

+1

你的程序在做什麼?訪問任何內存,磁盤或其他IO?處理器/內核不是唯一的共享資源。 – Justin 2011-03-18 13:41:33

+0

從不建議優先級「更高」,除非絕對必要,因爲其他應用程序要求過高。沒有提高優先級再試一次;那麼你的系統應該更加敏感。如果沒有,其他的東西正在佔用你的資源。 – pyrocumulus 2011-03-18 13:42:59

回答

0

您的應用程序是否有主窗口?它在前景嗎?如果是,難怪自從PriorityBoostEnabled=true將使您的應用程序的優先級甚至更高。

+0

是的,應用程序有主窗口。它是一個豐富的UI客戶端(網格,多線程任務...) – garik 2011-03-18 13:49:57