我正在开发一个项目来衡量一些代码模式对CPU的影响.为此,我需要在CPU上运行我的进程并停止CPU上的所有其他进程以查看我的进程的实际效果.
另外,我需要在CPU的1个核心上运行我的进程.任何人都可以帮助如何在C++中做到这一点?
您可以设置进程的处理器关联性。当您这样做时,您的进程将仅在该 CPU 中运行。因此您可以衡量流程的性能。这就是我在 VC++ 中为服务所做的事情。希望这有帮助。
SYSTEM_INFO SystemInfo;
GetSystemInfo(&SystemInfo);
HANDLE hProcess = GetCurrentProcess();
if(SystemInfo.dwNumberOfProcessors >1)
{
//DWORD dwProcessAffinityMask, dwSystemAffinityMask;
//GetProcessAffinityMask( hProcess, &dwProcessAffinityMask, &dwSystemAffinityMask );
//SetProcessAffinityMask( hProcess, 1L );// use CPU 0 only
//SetProcessAffinityMask( hProcess, 2L );// use CPU 1 only
//SetProcessAffinityMask( hProcess, 3L );// allow running on both CPUs
SetProcessAffinityMask( hProcess, 2L );// use CPU 1 only
}
Run Code Online (Sandbox Code Playgroud)