专注于CPU使用C++在1核上运行您的进程

Nai*_*aif 6 c++

我正在开发一个项目来衡量一些代码模式对CPU的影响.为此,我需要在CPU上运行我的进程并停止CPU上的所有其他进程以查看我的进程的实际效果.

另外,我需要在CPU的1个核心上运行我的进程.任何人都可以帮助如何在C++中做到这一点?

ckv*_*ckv 1

您可以设置进程的处理器关联性。当您这样做时,您的进程将仅在该 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)