| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Нужен совет по использованию таймеров |
| Автор: Xerx 20.2.2006, 10:29 |
| Допустим, у меня есть повторяющийся во времени процесс. Он состоит из стадий. Каждая стадия имеет свою длительность (в десятках{и сотнях} миллисекунд). Сразу по завершении текущей стадии начинается следующая. При завершении последней действие повторяется. Все управляется таймером. Он должен срабатывать на НЕКОТОРЫХ стадиях несколько раз, а на некоторых достаточно срабатываний на временных границах (т.е. в начале и в конце стадии). Каждая стадия нересурсоемка. Так вот, как лучше это сделать? Сделать один таймер, который будет вызываться с минимально необходимым периодом и в своем обработчике выбирать действия в зависимости от стадии, или работать с набором таймеров, создавая и уничтожая их для каждой стадии? Или как-то можно изменять параметры таймера без его пересоздания (по его идентификатору)? Кстати, длительности стадий не кратны (да и частота срабатываний тоже)! Т.е. может быть такой цикл 200(20 раз) - 35(1 раз) - 320(7 раз) - 87(2 раза). Ну, или кратно 5-10 милисекундам. Каково ваше мнение? Как лучше сделать? И почему?! |
| Автор: _hunter 20.2.2006, 11:09 |
| позасовывай все стадии в потоки. тогда кратность будет реализовываться while' ом, а время -- slep' ом. следущую задачу запускать из завершающегося потока ( можно ( точнее нужно ) и менеджер потоков прикрутить и запускать задачи из него ) |
| Автор: Fixin 20.2.2006, 23:18 |
| ИМХО, потоки не пойдут. а версия со "слип"-ом не пойдет тк я понял, что стадии должны работать по сколько-то миллимекунд, а не паузы делать на промежуток. лучше менять параметры таймера и огранизовать удобную таблицу стадия-время-колво пвторений. |
| Автор: Xerx 20.2.2006, 23:47 |
| Fixin > В идеале, конечно, менять параметры таймера. Но как-то это можно сделать без пересоздания? |
| Автор: Aleksandor 21.2.2006, 10:50 | ||
SetTimer с идентификатором уже существующего таймера, но новым интервалом |
| Автор: Xerx 21.2.2006, 15:54 |
| Да? Интересно... Попробую. А ресурсы точно не ест? |
| Автор: Fixin 21.2.2006, 20:53 |
| Ну, это сколько таймеров нащелкаешь. Если один - то нет. При создании проверяешь - создался или нет, вот и все. Если нет - ошибка. |