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_INFORMATIONを参照してくださいAssignProcessToJobObject。独自の社内プロセス スロットリングを手作りしようとしないでください。このタスク用に特別に設計されたコンポーネント (ジョブなど) にタスクを処理させてください。

.net での CreateJobObject/SetInformationJobObject pinvoke の作業例を参照してください。NT Job ネイティブ API の管理された使用法。

于 2014-08-18T14:34:29.557 に答える