是否有一种方法可以限制c ++应用程序使用的CPU数量

问题描述 投票:0回答:1

我正在研究一个计算recaman序列的程序。我要计算,然后在序列中可视化成千上万个术语。但是,我注意到它占用了10%的CPU,任务管理器说它具有很高的功耗。我不想损坏计算机,并愿意为了提高计算机的安全性而牺牲速度。有没有办法限制此应用程序的CPU使用率或电池消耗水平?

这是用于Windows 10。

//My Function for calculating the sequence
//If it helps, you could look up 'Recaman Sequence' on google

void processSequence(int numberOfTerms) {
    int* terms;
    terms = new int[numberOfTerms];

    terms[0] = 0;
    cout << "Term Number " << 0 << " is: " << 0 << endl;

    int currentTermNumber = 1;
    int lastTerm = 0;
    int largestTerm = 0;

    for (currentTermNumber; currentTermNumber < numberOfTerms; currentTermNumber++) {
        int thisTerm;
        bool termTaken = false;
        for (int j = 0; j < numberOfTerms; j++) {
            if (terms[j] == lastTerm - currentTermNumber) {
                termTaken = true;
            }
        }

        if (!termTaken && lastTerm - currentTermNumber > 0) {
            thisTerm = lastTerm - currentTermNumber;
        }
        else {
            thisTerm = lastTerm + currentTermNumber;
        }

        if (thisTerm > largestTerm) {
            largestTerm = thisTerm;
        }
        lastTerm = thisTerm;

        cout << "Term Number " << currentTermNumber << " is: " << thisTerm << endl;
    };

    cout << "The Largest Term Number Was: " << largestTerm << endl;

    delete[] terms;
}
c++ cpu-usage
1个回答
0
投票

使用更少的CPU的最简单方法是不时地睡眠一小段时间,例如一毫秒或几毫秒。您可以通过调用Sleep(Windows API)或current_thread :: sleep(从C ++ 11开始为标准)来做到这一点。

然而,

  • 当以100%使用所有内核时,您永远不会物理损坏计算机。无论如何,大多数电子游戏都如此贪婪。如果CPU达到极限温度(80-100°C),则可能发生的最坏情况是突然关闭并且在接下来的几分钟内无法再次打开。实际上,这种安全性可以防止任何危险和/或不可恢复的事情。
  • 这样故意降低程序速度很少。如果用户界面运行缓慢,则应将密集处理移至非UI线程。
© www.soinside.com 2019 - 2024. All rights reserved.