![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
Не могу понять, если задать 0. Что это будет означать? Или лучше вместо нуля задавать -1, что будет значить - через 100 наносекунд? -------------------- я не гольфист - я хоккеист |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
так а тебе что нужно? 0 он и в африке 0. 1 -- 100 нс.
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
мне надо, чтобы таймер срабатывал в ровные часы. при вызове SetWaitableTimer я хочу смотреть, сколько времени осталось до времени "х" и его устанавливать в этом параметре. Но вот если я попаду именно на то самое время, когда дельта будет равна нулю и передам 0, что тогда? Ведь как я понимаю, только отрицательное значение говорит о том, через какое время таймер сработает в первый раз. А при положительном мы задаем конкретное время.
Далее, при взведении таймера снова SetWaitabletimer....(это я так, что бы не было лишних вопросов) -------------------- я не гольфист - я хоккеист |
|||
|
||||
Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
![]() ![]() ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
||||
|
|||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
Romikgy не понял...
-------------------- я не гольфист - я хоккеист |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
Тип LONG это беззнаковый, как туда можно -1 засунуть?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
Romikgy понял, но я не вижу возможности вообще его использовать(см. топик про спящий режим), буду при каждом взведении таймера задавать его параметры заново.
Добавлено @ 11:30
Я про const LARGE_INTEGER* pDueTime спрашиваю Добавлено @ 11:31 и в первом сообщении - выдержка из мсдн -------------------- я не гольфист - я хоккеист |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
Romikgy, он про const LARGE_INTEGER* pDueTime говорил а не про LONG lPeriod
takedo, если ты попадеш именно на то время -- зачем тебе таймер запускать? сразу код выполняй... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
я жду событие в другом потоке, а значит вроде бы как надо все таки таймер взвести
-------------------- я не гольфист - я хоккеист |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
Это указатель на структуру FILETIME, в которой ты мож указать время срабатывания твоего таймера, т.е. поставить допустим на 1 декабря 2031 года, и если комп будет включен , то таймер перейдет в сигнальное состояние, и далее будет переводится в сигнальное состояние каждые
Добавлено @ 11:43 Имхо я так понял ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
да правильно ты понял, но FILETIME - передавать - большая ошибка(из Рихтера), я спрашиваю про 0. Вот попробую я сейча 0 поставить...
Добавлено @ 11:47 да вроде бы прилетел сразу в обработчик(туда-куда нужно). Но ноль ведь это не отрицательное все-таки число, млин!!! Надо было сразу проверить, только внимание привлек, сорри. -------------------- я не гольфист - я хоккеист |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
но и не положительное
![]() -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
_hunter
![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Чтобы сработал сразу - нужно устанавливать 0, если установить -1 (или любое отрицательное число эквивалентное задержке до ~10 мс), сработает через 10 мс, хотя и устанавливается вроде с дискретностью 100 нс. Короче, реальная дискретность его ~10 мс. Т.е. это вам не performance counter, а обычный системный таймер.
![]() -------------------- ... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
Earnest От куда такая прескорбная информация?
![]() ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Нарвалась, оттуда и информация.
Когда прочла про WaitableTimer с наносекундным временем, обрадовалась. Мне нужно было регулировать скорость некоторого визуального процесса, и я решила что WaitableTimer идеально подходит: заводим таймер, выполняем шаг, до звонка курим, потом опять шаг и курим и т.д. - все в потоке, конечно - и звучит и реализуется элементарно. Только вот не проверила сразу диапазон доступной скорости в релизе. В дебаге верхний предел скорости был низковат, но я решила - там же море всякой фигни лишней + грешила на другие лишние операции. Когда пришло время таки разобраться со скоростью - выяснилось - не звонит он чаще, чем раз в 10 ms, хоть тресни. Или сразу срабатывает (если dueTime=0). Я его и так и этак (очень не хотелось переписывать), MSDN перерыла - ни слова не нашла. Провела измерения (не спрашивай какие - не помню уже - какой-то тест нарисовала), убедилась: увы. Если хорошенько подумать - это, наверно, очевидно для железячников: 100 Гц системный таймер... Но так хотелось... -------------------- ... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
Да, походу дела размечтались
![]() ![]() Но так хотелось, это уж точно, но 10 ms - это за сто обращений - набежит 1 секунда!! Жуть... А где интересно этот таймер "крутится"? Надо наверное попытаться ему приоритет поднять обязательно. Добавлено @ 11:42 там же где и все он крутится?.. ммддааа.. Добавлено @ 11:44 Вот интересно, если запустить два идентичных процесса, в каждом по такому таймеру. Одному процессу поставить приоритет RealTime. Как тогда таймеры будут работать? (хоть бери и пробуй ей богу). Нет мыслей случайно? -------------------- я не гольфист - я хоккеист |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Знаешь, я выкрутилась так: просто собрала шаги в пакеты. Из заданной скорости вычисляю нужный период таймера (10, 20 и т.д. мс) и число шагов в пакете. Дальше - как и было: выполняется нужное число шагов, потом курим до звонка. Так что минимальными изменениями обошлась.
-------------------- ... |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
ну у тебя возможно так, а в принципе то надо бы как-то это решать по другому.. Надо брать товарища Рихтера, смотреть кому же принадлежит таймер(все-таки можно наверное с приоритетом потока, которому принадлежит таймер поиграть!). Ну если накопаю чего или тесты проведу, создам опять таки "интересное замечание"
![]() ![]() -------------------- я не гольфист - я хоккеист |
|||
|
||||
takedo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
Earnest c 10 ms тебе просто повезло! -------------------- я не гольфист - я хоккеист |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Я думаю, просто сейчас процессоры немного чаще это делать стали. Раньше системный таймер кажется именно 50 Гц был. Книжка-то старая - ей уж лет 10... И не думаю, что он все поправил под современное состояние дел.
-------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |