Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Счётчик времени минут и секунд тормозит CPU


Автор: DragoonFighter 14.9.2008, 15:43
Здравствуйте,
у меня тут маленькая проблема. Вот дети играют в игры в которых можно каждый час добавлять деньга на игровой счёт. Решил написать малую и простенькую программу чтоб им автоматически заполнялся счёт каждый час. 

Написал, работает. Но заметил что компьютер тормозит по полной! Зашёл  в Task Manager а эта программа перегружает процессор по полной, причины не могу найти. Может это так и должно быть, тоже не знаю. Вот код, если кто  знает почему так, может откликнутся? 
За ранние спасибо!

Код

#include <ctime>
#include <ostream>
#include <cstdlib>
#include <iostream>
#include <string>

#include <windows.h>


#define COLOR1    1
#define COLOR2    2
#define COLOR3    3

using namespace std;

void w( int seconds )
        {
        clock_t endwait;
        endwait = clock () + seconds * CLOCKS_PER_SEC ;
        while (clock() < endwait) {}
        };
void c(short int a)
        {
        HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE );
        SetConsoleTextAttribute( handle, a ); 
        };

int main(int argc, char *argv[])
{
    string menu;
    
    while(1) {
             c(15);
             cout << "Menu" << endl;
             cout << "" << endl;
             cout << "[1] - ";
             c(12);
             cout << "freak";
             c(15);
             cout << " -> Pennergame" << endl;
             cout << "" << endl;
             getline(cin, menu);
             
             if(menu == "1") {
                     system("start http://www.pennergame.de/change_please/6818801/");
                     while(1) {
                              int m = 60;
                              while(m > 0) {
                                      int s = 60;
                                      m--;
                                      while(s > 0) {
                                              system("cls");
                                              cout << "Еще ";
                                              c(12);
                                              cout << m;
                                              c(15);
                                              cout << "минут" << endl;
                                              cout << "...и ";
                                              c(10);
                                              cout << s;
                                              c(15);
                                              cout  << " секунд" << endl;
                                              s--;
                                              w(1);
                                              }
                                      continue;
                                      }
                     }
                     system("start http://www.pennergame.de/change_please/6818801/");
                     continue;
}
    system("PAUSE");
    return EXIT_SUCCESS;
}

Автор: Ln78 14.9.2008, 16:41
Цитата(DragoonFighter @  14.9.2008,  16:43 Найти цитируемый пост)
while (clock() < endwait) {}

DragoonFighter, здесь ты ничего не делаешь, но тратишь на это уйму энергии. Нужно использовать что-нибудь менее обременительное для компьютера, например, Sleep.

Автор: DragoonFighter 14.9.2008, 16:49
Благодарю Ln72!

Автор: chipset 14.9.2008, 22:25
Ещё круче http://msdn.microsoft.com/en-us/library/ms687012(VS.85).aspx. Кстати 50% загрузка потому-что у тебя видимо два проца, ага?

Автор: Gongex 22.9.2008, 17:28
нагрузка на процессор потому что из while не вылезает, а их у него 5 где то........как бесконечный цикл
Комп ждет пять вещей5 циклов whileмозги рзрывает,это все равно что включить сразу пять экшенов стрелялок      Используй IF() {  ;}

Автор: NebelDT 30.9.2008, 20:29
ДА с while ты переборшил, у меня такое тож бывало... smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)