Member
Статус: Не в сети Регистрация: 18.03.2003 Откуда: Moscow
Каким образом можно реализовать на Си прогу,которая просто будет работать таймером-секундомером.
Главный вопрос - какая функция отвечает за приостановку выполнения программы на N миллисекунд?
Добавлено спустя 28 минут, 57 секунд: Народ ОЧЕНь нужно просто позарез,без этой функции дальше с места не сдвинусь ХЭЛП ПЛИЗ!!!
Member
Статус: Не в сети Регистрация: 11.11.2004 Откуда: Челябинск
Вообще надо брать текущее время, засекать его, затем брать ещё раз и вычислять разницу. Все остальное фигня (если не нужны интервалы меньше миллисекунды).
_________________ пишу я программу... и вдруг на клавиатуру выползает bug, буквально
Member
Статус: Не в сети Регистрация: 11.11.2004 Откуда: Челябинск
Не, ну если нужно подвесить программу на некоторое время, то да, Sleep. Однако думаешь такая реализация таймера-секундомера самая правильная (хотя это и спрашивается автором)? Это ведь даст только задать один временной интервал, а при использовании текущего времени или TTimer - сколько угодно.
Добавлено спустя 9 минут, 19 секунд: И есл инужен таймер обратного отсчета на 5 часов? Программа будет весело висеть все это время
_________________ пишу я программу... и вдруг на клавиатуру выползает bug, буквально
Member
Статус: Не в сети Регистрация: 18.03.2003 Откуда: Moscow
Нда...если не ошубась параметр в sleep передаётся int'ом причём в СЕКУНДАХ...
а мне то нужны миллисекунды.
И ещё - никаких Борландов и Визуал Си
Считайте - стандартный линуксовский компилятор (G++) например
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Sleep имеет параметр в милисекундах, но квант зависит от OS. Для W9x квант времени = 5mS (примерно), для NT-clone (NT 2K XP) 20mS.
Получить достоверную задержку точнее этого кванта через Sleep нельзя.
А вообще ... если нужны дискреты времени - заведи себе Timer. Это ASM, в С сам переведешь.
Member
Статус: Не в сети Регистрация: 18.03.2003 Откуда: Moscow
serj_
Цитата:
Это ASM, в С сам переведешь.
я в шоке.
Я асемблер в глаза то никогд не видел,а ты говоришь-сам переведёшь...
И всё таки в слип передаётся как параметр целое числ(инт) - и это количество секунд задержки...это точно.Только что ман прочёл.
Member
Статус: Не в сети Регистрация: 11.11.2004 Откуда: Челябинск
KoXed Вот тебе хэлп из C++ Builder 6 (в дельфях тоже самое)
Цитата:
The Sleep function suspends the execution of the current thread for a specified interval.
VOID Sleep(
DWORD dwMilliseconds // sleep time in milliseconds );
Parameters
dwMilliseconds
Specifies the time, in milliseconds, for which to suspend execution. A value of zero causes the thread to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run. If there are no other threads of equal priority ready to run, the function returns immediately, and the thread continues execution. A value of INFINITE causes an infinite delay.
Return Values
This function does not return a value.
_________________ пишу я программу... и вдруг на клавиатуру выползает bug, буквально
Имхо sleep не гуд просто так - вид такой какбудто прога зависла Лучше сделать в отдельном потоке таймер на том же sleep
а в главном потоке ждать WaitForSingleObject ето приятней.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Ray Adams, в задании написано:
Цитата:
просто будет работать таймером-секундомером.
Что может быть _проще_ запустить перезапускаемый таймер на него thread подсчета? Впрочем .... скорее всего KoXed надо TSC, просто он об этом не знает.
KoXed - есть такая вещь, как TSC (Time-Stamp Counter) - он считает тики процессора от его включения. Считается в паре edx:eax, т.е. переполнения не будет. Точность так-же хорошая, точнее нельзя.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения