【发布时间】:2019-05-05 11:43:46
【问题描述】:
我正在使用 JobObject 来限制我的进程 CPU 使用率。我在两台运行 Windows 10 的计算机上运行我的代码。在一台机器上它正在工作,但在另一台机器上它不工作,尽管所有 WINAPI 调用都成功返回。这是我的代码:
string jobName = "test_job";
HANDLE hJobObject = NULL;
hJobObject = CreateJobObject(NULL, jobName.c_str());
if (hJobObject == NULL) {
return -1;
}
JOBOBJECT_CPU_RATE_CONTROL_INFORMATION cpuRateInfo;
cpuRateInfo.ControlFlags = JOB_OBJECT_CPU_RATE_CONTROL_ENABLE | JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP;
cpuRateInfo.CpuRate = 10 * 100;
if (!SetInformationJobObject(hJobObject, JobObjectCpuRateControlInformation, &cpuRateInfo, sizeof(JOBOBJECT_CPU_RATE_CONTROL_INFORMATION))) {
return -1;
}
HANDLE currentProcessHandle = GetCurrentProcess();
if (!AssignProcessToJobObject(hJobObject, currentProcessHandle)) {
return -1;
}
知道是什么导致了这个问题吗?
【问题讨论】:
-
澄清你所说的不工作是什么意思。是否限制在小于或大于 10%,或者根本不限制?
-
完全没有限制
标签: c++ windows winapi cpu-usage