![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Xerx |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.5.2005 Где: Калуга Репутация: нет Всего: нет |
Допустим, у меня есть повторяющийся во времени процесс. Он состоит из стадий. Каждая стадия имеет свою длительность (в десятках{и сотнях} миллисекунд). Сразу по завершении текущей стадии начинается следующая. При завершении последней действие повторяется. Все управляется таймером. Он должен срабатывать на НЕКОТОРЫХ стадиях несколько раз, а на некоторых достаточно срабатываний на временных границах (т.е. в начале и в конце стадии). Каждая стадия нересурсоемка.
Так вот, как лучше это сделать? Сделать один таймер, который будет вызываться с минимально необходимым периодом и в своем обработчике выбирать действия в зависимости от стадии, или работать с набором таймеров, создавая и уничтожая их для каждой стадии? Или как-то можно изменять параметры таймера без его пересоздания (по его идентификатору)? Кстати, длительности стадий не кратны (да и частота срабатываний тоже)! Т.е. может быть такой цикл 200(20 раз) - 35(1 раз) - 320(7 раз) - 87(2 раза). Ну, или кратно 5-10 милисекундам. Каково ваше мнение? Как лучше сделать? И почему?! |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
позасовывай все стадии в потоки.
тогда кратность будет реализовываться while' ом, а время -- slep' ом. следущую задачу запускать из завершающегося потока ( можно ( точнее нужно ) и менеджер потоков прикрутить и запускать задачи из него ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
ИМХО, потоки не пойдут. а версия со "слип"-ом не пойдет тк я понял, что стадии должны работать по сколько-то миллимекунд, а не паузы делать на промежуток. лучше менять параметры таймера и огранизовать удобную таблицу стадия-время-колво пвторений.
|
|||
|
||||
Xerx |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.5.2005 Где: Калуга Репутация: нет Всего: нет |
Fixin > В идеале, конечно, менять параметры таймера. Но как-то это можно сделать без пересоздания?
|
|||
|
||||
Aleksandor |
|
|||
![]() Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 10 Всего: 12 |
SetTimer с идентификатором уже существующего таймера, но новым интервалом -------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
Xerx |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.5.2005 Где: Калуга Репутация: нет Всего: нет |
Да? Интересно... Попробую. А ресурсы точно не ест?
|
|||
|
||||
Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Ну, это сколько таймеров нащелкаешь. Если один - то нет. При создании проверяешь - создался или нет, вот и все. Если нет - ошибка.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |