Проблема с таймером C ++ - PullRequest
       0

Проблема с таймером C ++

0 голосов
/ 20 сентября 2011

Я написал класс таймера. После запуска таймера я хотел бы знать, прошло ли 20 секунд или нет, если это так, я хотел бы вызвать функцию или выполнить блок кода. Этот класс не работает, но я не знаю почему.

РЕДАКТИРОВАТЬ: это не работает, я имею в виду, что isTimeTout (секунд) всегда возвращает истину; Хотелось бы просто посмотреть, прошло ли несколько секунд, и исходя из этого сделать действие. таймер класса { частный: неподписанный длинный begTime; общественности: void start () { begTime = clock (); }

        unsigned long elapsedTime() {
            return ((unsigned long) clock() - begTime) / CLOCKS_PER_SEC;
        }

        bool isTimeout(unsigned long seconds) {
            return seconds >= elapsedTime();
        }
};

Ответы [ 3 ]

3 голосов
/ 20 сентября 2011

clock() измеряет время процессора, а не время стены.Попробуйте использовать time() вместе с difftime().

1 голос
/ 20 сентября 2011

Поскольку вы работаете в Windows, вы можете использовать clock().

Ошибка здесь:

return seconds >= elapsedTime();

должно быть:

return seconds <= elapsedTime();

То, что у вас есть сейчас, вернется true, когда меньше, чем 20 секунд.Отражение сравнения должно исправить это.

0 голосов
/ 20 сентября 2011

Попробуйте использовать time () и difftime (), как указано выше.У меня тоже раньше была эта проблема:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...