Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ещё один вопрос по SetWaitabletimer, второй параметр 
:(
    Опции темы
Earnest
Дата 27.12.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Нарвалась, оттуда и информация.
Когда прочла про WaitableTimer с наносекундным временем, обрадовалась. Мне нужно было регулировать скорость некоторого визуального процесса, и я решила что WaitableTimer идеально подходит: заводим таймер, выполняем шаг, до звонка курим, потом опять шаг и курим и т.д. - все в потоке, конечно - и звучит и реализуется элементарно.
Только вот не проверила сразу диапазон доступной скорости в релизе. В дебаге верхний предел скорости был низковат, но я решила - там же море всякой фигни лишней + грешила на другие лишние операции. Когда пришло время таки разобраться со скоростью - выяснилось - не звонит он чаще, чем раз в 10 ms, хоть тресни. Или сразу срабатывает (если dueTime=0). Я его и так и этак (очень не хотелось переписывать), MSDN перерыла - ни слова не нашла. Провела измерения (не спрашивай какие - не помню уже - какой-то тест нарисовала), убедилась: увы. Если хорошенько подумать - это, наверно, очевидно для железячников: 100 Гц системный таймер... Но так хотелось...


--------------------
...
PM   Вверх
takedo
Дата 27.12.2005, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: -1
Всего: 3



Да, походу дела размечтались smile Таймер на материнке выдает всего то 2МГц(могу ошибаться, но не на пару порядков), а это значит -6 степень, то есть микросекунды. 100наносек = -7 степень - УЖЕ НЕ КАТИТ. Да и WinCe заявляет гарантированное время реакции 45 микросекунд, видимо неспроста smile
Но так хотелось, это уж точно, но 10 ms - это за сто обращений - набежит 1 секунда!! Жуть...
А где интересно этот таймер "крутится"? Надо наверное попытаться ему приоритет поднять обязательно.
Добавлено @ 11:42
там же где и все он крутится?.. ммддааа..
Добавлено @ 11:44
Вот интересно, если запустить два идентичных процесса, в каждом по такому таймеру. Одному процессу поставить приоритет RealTime. Как тогда таймеры будут работать? (хоть бери и пробуй ей богу). Нет мыслей случайно?


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Earnest
Дата 27.12.2005, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Знаешь, я выкрутилась так: просто собрала шаги в пакеты. Из заданной скорости вычисляю нужный период таймера (10, 20 и т.д. мс) и число шагов в пакете. Дальше - как и было: выполняется нужное число шагов, потом курим до звонка. Так что минимальными изменениями обошлась.


--------------------
...
PM   Вверх
takedo
Дата 27.12.2005, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: -1
Всего: 3



ну у тебя возможно так, а в принципе то надо бы как-то это решать по другому.. Надо брать товарища Рихтера, смотреть кому же принадлежит таймер(все-таки можно наверное с приоритетом потока, которому принадлежит таймер поиграть!). Ну если накопаю чего или тесты проведу, создам опять таки "интересное замечание" smile Кому только вот интересно? smile


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
takedo
Дата 27.12.2005, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: -1
Всего: 3



Цитата
Каждые 20 мс (или около того) Windows просматривает все существующие объекты ядра "поток" и отмечает те из них, которые могут получать процессорное время
Рихтер, глава7.

Earnest c 10 ms тебе просто повезло!


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Earnest
Дата 27.12.2005, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Я думаю, просто сейчас процессоры немного чаще это делать стали. Раньше системный таймер кажется именно 50 Гц был. Книжка-то старая - ей уж лет 10... И не думаю, что он все поправил под современное состояние дел.


--------------------
...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0764 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.