设置系统进程的进程关联性以为自己的应用程序保留核心

时间:2016-11-06 19:34:41

标签: c++ windows winapi multicore

我正在使用CPU密集型实时应用程序,因此我试图为它保留一个完整的核心。

要在Windows中完成此操作,我尝试将所有正在运行的进程的CPU关联性设置为其他核心,然后将我的实时应用程序的亲和性设置为" free"核心。另外,我将优先级设置为高。

不幸的是,以下代码(129用于测试,因为它意味着我的系统上的第一个和最后一个核心)不会改变所有正在运行的进程的亲和力:

while (Process32Next(hSnapShot, processInfo)!=FALSE)
{
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, processInfo->th32ProcessID);
    SetProcessAffinityMask(hProcess, 129);
}

某些系统进程(如svchost.execsrss.exe)具有亲缘关系0xCCCCCCCC(看起来它未初始化且根本未使用)。当然,他们在失败SetProcessAffinityMask()之后保留它。

此外,无法使用任务管理器,因为它在尝试更改这些系统进程的关联时拒绝访问。

是否可以更改这些流程的亲和力?

其他信息:

  • Windows 7 64位
  • 实时应用程序只有一个帖子,因此一个核心就足够了#34;
  • 以下图片显示了不同之处:

不工作:

Not working

工作:

Working

0 个答案:

没有答案