有没有办法限制 c++ 应用程序使用的 CPU 的数量

Is there a way to limit the amount of CPU a c++ application uses

我正在开发一个计算 recaman 序列的程序。我想计算然后可视化序列中的数千或数百万项。但是,我注意到它占用了 CPU 的 10%,并且任务管理器说它的耗电量非常高。我不想损坏电脑,也愿意为了电脑的安全牺牲速度。有没有办法限制此应用程序的 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;
}

最简单的使用 less CPU 的方法是不时休眠一小段时间,例如一毫秒或几毫秒。 您可以通过调用 Sleep (Windows API) 或 current_thread::sleep(自 C++11 起的标准)来实现。

但是,

  • 以 100% 的速度使用所有内核时,您永远不会对计算机造成物理损坏。无论如何,大多数视频游戏都贪婪地这样做。可能发生的最坏情况是突然关闭并且在接下来的几分钟内无法再次打开,以防 CPU 达到极限温度 (80-100°C)。这种安全性确实可以防止任何危险 and/or 无法恢复。
  • 像这样故意放慢程序速度几乎没有意义。如果您的用户界面运行缓慢,您应该将密集处理移至非 UI 线程。