Форум программистов, компьютерный форум CyberForum.ru

Timer почему не работает? - C++

Восстановить пароль Регистрация
 
parikmaher534
38 / 38 / 1
Регистрация: 16.11.2011
Сообщений: 112
23.08.2012, 14:12     Timer почему не работает? #1
Добрый день.

Есть следующий код.

C
1
2
3
4
5
6
7
8
9
10
11
12
void Timer(CallBackType callback){
    int t1 = time(NULL);
    int t2 = time(NULL);
 
    while(1){
        t2 = time(NULL);
 
        if( t2 - t1 % 5 == 0 ){
            callback();
        };
    };
};
Но не могу понять почему не работает. Разница переменных t1-t2 возвращает кол-во секунд. Модуль этого числа рано или поздно должен стать равным нулю))) но что-то никак.
Не могу понять. Ведь сотни раз такое делал на других языках.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.08.2012, 14:16     Timer почему не работает? #2
конкретизируй - что значит "не работает" ?
parikmaher534
38 / 38 / 1
Регистрация: 16.11.2011
Сообщений: 112
23.08.2012, 14:19  [ТС]     Timer почему не работает? #3
При данном коде. В цикле содержимое условия не отрабатывает. Хотя равенство в условии выполняется 100%.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.08.2012, 14:23     Timer почему не работает? #4
Цитата Сообщение от parikmaher534 Посмотреть сообщение
Хотя равенство в условии выполняется 100%.
Цитата Сообщение от parikmaher534 Посмотреть сообщение
if( t2 - t1 % 5 == 0 )
а приоритет операций ты учел?
parikmaher534
38 / 38 / 1
Регистрация: 16.11.2011
Сообщений: 112
23.08.2012, 15:41  [ТС]     Timer почему не работает? #5
Да вы правы. Поместил вычитание в группирующий оператор.
Но теперь следующая проблема. Callback успевает отработать не один раз а много.
Как лучше без флага ограничить его выполнение одним разом?

Добавлено через 1 час 14 минут
Цитата Сообщение от Jupiter Посмотреть сообщение
а приоритет операций ты учел?
Думаю только вы сможете помочь мне)). Ибо никто не отвечает.

Проблема в том что Callback успевает отработать не один раз а много.
Как этого избежать?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.08.2012, 16:15     Timer почему не работает? #6
sleep вотки

Добавлено через 2 минуты
C++
1
2
3
4
#include <thread>
#include <chrono>
//...
std::this_thread::sleep_for(std::chrono::seconds(1));
C++
1
2
3
#include <windows.h>
//...
Sleep(1000);
Yandex
Объявления
23.08.2012, 16:15     Timer почему не работает?
Ответ Создать тему
Опции темы

Текущее время: 13:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru