3

我需要编写一个附加到某些 Windows 进程的类,监视和限制它们的 cpu 使用率。更改进程优先级对我一点帮助都没有,所以我真的需要编写一个基本上类似于 BES 或 ThreadMaster 的程序。所以我需要创建一个做这样的事情的类(伪代码):

public void cpuLimiter(pid)
{
    ProcessHandle handle = attachToProcess(pid);
    while (cpuLimiting)
    {
        if (handle.cpuUsage > 30%)
        {
            handle.sleep(100miliseconds);
        }
        sleep(10miliseconds);
    }
    closeHandle(pid);
}

我希望我清楚我想要完成什么,只是我不知道如何。感谢您的每一次帮助。

4

1 回答 1

8
  • 您创建一个 JOB 对象
  • 您限制 JOB 的 CPU
  • 您将目标进程附加到 JOB

请参阅作业对象CreateJobObjectSetInformationJobObject和、JOBOBJECT_CPU_RATE_CONTROL_INFORMATIONAssignProcessToJobObject不要尝试手工制作您自己的内部流程限制,让专门为此任务(即作业)设计的组件来处理任务。

请参阅.net 中 CreateJobObject/SetInformationJobObject pinvoke 的工作示例?用于 NT Job 本机 API 的托管使用。

于 2014-08-18T14:34:29.557 回答