Windows 进程绑定指定 CPU 核心并独占 - C++ 代码示例
要在 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;
}
原文地址: https://www.cveoy.top/t/topic/npl0 著作权归作者所有。请勿转载和采集!