Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 23 • Страница 1 из 21  2  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 18.03.2003
Откуда: Moscow
Каким образом можно реализовать на Си прогу,которая просто будет работать таймером-секундомером.
Главный вопрос - какая функция отвечает за приостановку выполнения программы на N миллисекунд?

Добавлено спустя 28 минут, 57 секунд:
Народ ОЧЕНь нужно просто позарез,без этой функции дальше с места не сдвинусь ХЭЛП ПЛИЗ!!!

_________________
Forewarned is forearmed.



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
А в хелп заглянуть не судьба чтоли???
Sleep


 

Member
Статус: Не в сети
Регистрация: 30.04.2004
Откуда: [Omsk Team]
или delay() в DOS

_________________
forum.omskteam.ru- Все о керамограните


 

Member
Статус: Не в сети
Регистрация: 11.11.2004
Откуда: Челябинск
Вообще надо брать текущее время, засекать его, затем брать ещё раз и вычислять разницу. Все остальное фигня (если не нужны интервалы меньше миллисекунды).

_________________
пишу я программу... и вдруг на клавиатуру выползает bug, буквально


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Rius Вообщето про миллисекунды и говориться, а что проше сделать Sleep(миллисекунд) или твой странный метод для задержек?


 

Member
Статус: Не в сети
Регистрация: 11.11.2004
Откуда: Челябинск
Не, ну если нужно подвесить программу на некоторое время, то да, Sleep. Однако думаешь такая реализация таймера-секундомера самая правильная (хотя это и спрашивается автором)? Это ведь даст только задать один временной интервал, а при использовании текущего времени или TTimer - сколько угодно.

Добавлено спустя 9 минут, 19 секунд:
И есл инужен таймер обратного отсчета на 5 часов? Программа будет весело висеть все это время :)

_________________
пишу я программу... и вдруг на клавиатуру выползает bug, буквально


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Rius Мы отошли от темы, вопрос был про Sleep :)


 

Member
Статус: Не в сети
Регистрация: 11.11.2004
Откуда: Челябинск
Ray Adams Лады :beer:

_________________
пишу я программу... и вдруг на клавиатуру выползает bug, буквально


 

Member
Статус: Не в сети
Регистрация: 18.03.2003
Откуда: Moscow
Нда...если не ошубась параметр в sleep передаётся int'ом причём в СЕКУНДАХ...
а мне то нужны миллисекунды.
И ещё - никаких Борландов и Визуал Си
Считайте - стандартный линуксовский компилятор (G++) например

_________________
Forewarned is forearmed.


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Sleep имеет параметр в милисекундах, но квант зависит от OS. Для W9x квант времени = 5mS (примерно), для NT-clone (NT 2K XP) 20mS.
Получить достоверную задержку точнее этого кванта через Sleep нельзя.

А вообще ... если нужны дискреты времени - заведи себе Timer. :)
Это ASM, в С сам переведешь.
Код:
   mov           eax,offset TimerPrc
   invoke        SetTimer,0,0,500,eax ; интервал 500mS
   mov           TimerID,eax

Процедура будет запускаться каждые 0.5сек. :)


 

Member
Статус: Не в сети
Регистрация: 18.03.2003
Откуда: Moscow
serj_
Цитата:
Это ASM, в С сам переведешь.

я в шоке.
Я асемблер в глаза то никогд не видел,а ты говоришь-сам переведёшь...
И всё таки в слип передаётся как параметр целое числ(инт) - и это количество секунд задержки...это точно.Только что ман прочёл.

_________________
Forewarned is forearmed.


 

Member
Статус: Не в сети
Регистрация: 23.09.2003
Откуда: South Ural
минимальный квант времени для NT-based операционок составляет примерно 1 мс
http://www.sysinternals.com/ntw2k/info/timer.shtml
ничто не мешает его задать через NtSetTimerResolution
учите матчасть

_________________
http://stargaz0r.nm.ru
http://people.overclockers.ru/StarGaz0r/files


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
ммм ... замечательный способ рекомендовать недокументиррованную команду. Почему я не удивлен?


 

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, буквально


 

Member
Статус: Не в сети
Регистрация: 23.09.2003
Откуда: South Ural
потому что увиливать и дезинформировать легче чем удивляться ;)

_________________
http://stargaz0r.nm.ru
http://people.overclockers.ru/StarGaz0r/files


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Блин давайте не будем раздувать тему, KoXed тебе миллисекунды были нужны? Тогда используй Sleep.


 

Имхо sleep не гуд просто так - вид такой какбудто прога зависла :)
Лучше сделать в отдельном потоке таймер на том же sleep
а в главном потоке ждать WaitForSingleObject ето приятней.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
CrazyAngel Вот ты блин, там задержки в миллисекунды!!! Ты пока будет готовить сои выкрутасы время задержки уже уйдет.
Где модеры блин? :)


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Ray Adams, в задании написано:
Цитата:
просто будет работать таймером-секундомером.

Что может быть _проще_ запустить перезапускаемый таймер на него thread подсчета? :)
Впрочем .... скорее всего KoXed надо TSC, просто он об этом не знает. ;)

KoXed - есть такая вещь, как TSC (Time-Stamp Counter) - он считает тики процессора от его включения. Считается в паре edx:eax, т.е. переполнения не будет. Точность так-же хорошая, точнее нельзя. :)


 

Member
Статус: Не в сети
Регистрация: 30.04.2004
Откуда: [Omsk Team]
что эти миллисекунды? нужно использовать sleep(), а не писать драйвер

_________________
forum.omskteam.ru- Все о керамограните


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 23 • Страница 1 из 21  2  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan