要在 Windows 上指定一个进程在指定 CPU 核心上运行,可以使用 SetProcessAffinityMask 函数。该函数允许您指定一个掩码,该掩码指定进程可以在哪些 CPU 核心上运行。要独占一个核心,您可以将掩码设置为只包含一个位。

要防止其他进程调用该核心,您可以使用 SetThreadAffinityMask 函数来限制其他线程可以在哪些 CPU 核心上运行。可以将掩码设置为除指定核心外的所有核心。

以下是一个示例代码,它将进程绑定到第一个 CPU 核心并限制其他线程可以在该核心上运行:

#include <Windows.h>

int main()
{
    // 获取当前进程句柄
    HANDLE hProcess = GetCurrentProcess();

    // 获取第一个 CPU 核心的掩码
    DWORD_PTR dwProcessAffinityMask;
    DWORD_PTR dwSystemAffinityMask;
    GetProcessAffinityMask(hProcess, &dwProcessAffinityMask, &dwSystemAffinityMask);
    DWORD_PTR dwCoreMask = 1;

    // 将进程绑定到第一个 CPU 核心
    SetProcessAffinityMask(hProcess, dwCoreMask);

    // 获取当前线程句柄
    HANDLE hThread = GetCurrentThread();

    // 获取除第一个 CPU 核心外的所有核心的掩码
    DWORD_PTR dwThreadAffinityMask = dwProcessAffinityMask & (~dwCoreMask);

    // 限制当前线程只能在除第一个 CPU 核心外的所有核心上运行
    SetThreadAffinityMask(hThread, dwThreadAffinityMask);

    // 在这里运行您的代码

    return 0;
}
Windows 进程绑定指定 CPU 核心并独占 - C++ 代码示例

原文地址: https://www.cveoy.top/t/topic/npl0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录