嗨,大家好这个问题可能看起来很奇怪,但我采用的Haptek人的油灰放进我的C#应用程序和我见过的人说,在论坛,它不工作,以及与多核处理器。我应用运行良好,在我的核心2的二人的笔记本电脑,但它落后了很多,当我试试运行它在四核桌面上。我想调查这个对于我自己和在这种情况下,我将必须迫使我应用程序运行一个单一的核心。是,可能在C#?谢谢!

有帮助吗?

解决方案

其中一个 Process 变量 proc 保持这个过程中你关心(Process.GetCurrentProcess() 对于正在运行过程中,获得它从 GetProcesses()GetProcessesByName() 等等。为另一个进程。然后:

foreach(ProcessThread pt in proc.Threads)
{
   pt.IdealProcessor = 0;
   pt.ProcessorAffinity = (IntPtr)1;
}

IdealProcessor是一个零的基于身份的单一的核心。ProcessorAffinity是一位,因此1允许核零,2允许核心之一,3个允许核零与一,4允许核心两个,等等。

我会试这个 彻底.机会是非常强烈,这实际上会损害你的性能,减少了能够使用不同的核心,其后所有一般优势。

其他提示

如果申请是单线,它不会利用多核心。然而,这可能是内核可以碰线之间的核心。我怀疑,这是因为你的表现问题。

如果你想打线下降到一个单一的核心(不知道,如果这可以保证),您可能想退房的 System.Diagnostics.ProcessThread.ProcessorAffinity 酒店,虽然我从来没有使用它自己。

  • 真的不可能的。嗯,我不知道关闭。你需要的互操作,与它的工作。

  • 您使用的是多线程的?如果没有-hm-对不起-没有很多可以做。标准UI的应用程序未使用多核心。

基本上,应用不使用螺纹(工作项目使用的线)是固有的单一核心。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top