Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

Нужен совет по использованию таймеров   Найти похожие ветки 

 
Xerx ©   (2006-02-20 10:27) [0]

Допустим, у меня есть повторяющийся во времени процесс. Он состоит из стадий. Каждая стадия имеет свою длительность (в десятках{и сотнях} миллисекунд). Сразу по завершении текущей стадии начинается следующая. При завершении последней действие повторяется. Все управляется таймером. Он должен срабатывать на НЕКОТОРЫХ стадиях несколько раз, а на некоторых достаточно срабатываний на временных границах (т.е. в начале и в конце стадии). Каждая стадия нересурсоемка.
Так вот, как лучше это сделать? Сделать один таймер, который будет вызываться с минимально необходимым периодом и в своем обработчике выбирать действия в зависимости от стадии, или работать с набором таймеров, создавая и уничтожая их для каждой стадии? Или как-то можно изменять параметры таймера без его пересоздания (по его идентификатору)?
Кстати, длительности стадий не кратны (да и частота срабатываний тоже)! Т.е. может быть такой цикл 200(20 раз) - 35(1 раз) - 320(7 раз) - 87(2 раза). Ну, или кратно 5-10 милисекундам.
Каково ваше мнение? Как лучше сделать? И почему?!


 
RO   (2006-02-20 13:09) [1]

Приведи пример "стадии" в коде либо в псевдокоде ..


 
Xerx ©   (2006-02-20 23:57) [2]

Чисто эмпирический код. Не мой.


<обработка таймера>
case State of
 state_1:
   begin
      ElapsedTime := OldTime - GetTickCount();
      inc(TotalTime, ElapsedTime);

      if (TotalTime >= MaxTime[state_1]) then
      begin
        State := state_2;
        OldTime := GetTickCount();
        TotalTime := 0;
        exit;
      end;

      if (ElapsedTime >= State_1_interval) then
        do_something_work();
   end;

 state_2: begin ... end;
 ...
end;


Ну, вроде так.


 
RO   (2006-02-21 08:20) [3]

do_something_work() - блокирующая ф-ция ?
Где гарантия что время ее выполнения будет заведомо меньше периода срабатывания таймера ?



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
15-1145346985
Сайбель Алексей
2006-04-18 11:56
2006.05.14
Difference Algorithm and Its Variations


15-1143752553
__Иксик__
2006-03-31 01:02
2006.05.14
Любэ


2-1145852307
Westbronx
2006-04-24 08:18
2006.05.14
Работа с текстом


2-1145813851
BobUser
2006-04-23 21:37
2006.05.14
Получить все перестановки чисел 0..N


15-1145537828
fast2
2006-04-20 16:57
2006.05.14
Где взять маленькие рисунки всяких стрелочек, галочек и т.д.