力C#应用程序使用一个单一的核心,在一个电脑多核处理器
-
26-09-2019 - |
题
嗨,大家好这个问题可能看起来很奇怪,但我采用的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的应用程序未使用多核心。
基本上,应用不使用螺纹(工作项目使用的线)是固有的单一核心。
不隶属于 StackOverflow