Есть ли способ ограничить количество процессоров, используемых приложением c ++ - PullRequest
0 голосов
/ 29 сентября 2019

Я работаю над программой, которая вычисляет последовательность восстановления. Я хочу вычислить, а затем визуализировать тысячи или миллионы терминов в последовательности. Однако я заметил, что он занимает 10% процессорного времени, а диспетчер задач говорит, что он потребляет очень много энергии. Я не хочу портить компьютер и готов пожертвовать скоростью ради безопасности компьютера. Есть ли способ ограничить использование процессора или уровень заряда батареи этого приложения?

Это для 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;
}

1 Ответ

0 голосов
/ 29 сентября 2019

Самый простой способ использовать меньше ЦП - это время от времени спать в течение короткого периода времени, например, одной или нескольких миллисекунд. Вы можете сделать это, вызвав Sleep (Windows API) или current_thread :: sleep (стандартная версия с C ++ 11).

Однако,

  • Вы никогда не нанесете физического уронаваш компьютер при использовании всех ядер на 100%. Так или иначе, большинство видеоигр делают это с жадностью. Худшее, что может произойти, - это внезапное отключение и невозможность повторного включения в течение следующих нескольких минут, если процессор достиг предельной температуры (80-100 ° C). Эта защита действительно существует для предотвращения чего-либо опасного и / или неисправимого.
  • Редко имеет смысл намеренно замедлять вашу программу, как эта. Если вы испытываете медлительность в пользовательском интерфейсе, вам следует перенести интенсивную обработку в поток без пользовательского интерфейса.
...