我正在使用CPU密集型实时应用程序,因此我试图为它保留一个完整的核心。
要在Windows中完成此操作,我尝试将所有正在运行的进程的CPU关联性设置为其他核心,然后将我的实时应用程序的亲和性设置为" free"核心。另外,我将优先级设置为高。
不幸的是,以下代码(129用于测试,因为它意味着我的系统上的第一个和最后一个核心)不会改变所有正在运行的进程的亲和力:
while (Process32Next(hSnapShot, processInfo)!=FALSE)
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, processInfo->th32ProcessID);
SetProcessAffinityMask(hProcess, 129);
}
某些系统进程(如svchost.exe
或csrss.exe
)具有亲缘关系0xCCCCCCCC
(看起来它未初始化且根本未使用)。当然,他们在失败SetProcessAffinityMask()
之后保留它。
此外,无法使用任务管理器,因为它在尝试更改这些系统进程的关联时拒绝访问。
是否可以更改这些流程的亲和力?
其他信息:
不工作:
工作: