2011-03-18 30 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