Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

запуск в определенный момент времени !?


YDV ©   (2003-04-13 19:26:00) 

доброго Вам времени суток !...

... кто-нибудь разбирался с вопросом запуском определенных процедур по времени, ну например каждые 20 минут...
недавно я начал копать... написал основную прогу к ней приделал поток, который постоянно смотрит на часики и проверяет необходимость на запуск, в принципе все работает, но есть одно но !!! - прога в этом случае ест примерно 99% процессорного времени !

Может можно ето сделать как-нибудь инначе, с меньшими затратами времени проца ?

заранее спасибо за ответ !


YDV   (2003-04-15 08:52:00) [1]

>Digitman:
Спасибо за уточнение !


Digitman   (2003-04-15 08:37:00) [2]

Для того, чтобы код.поток не "ел" процессорное время и в то же время мог оперативно реагировать на системные/прикладные события/сообщения, необходимо везде где это возможно избегать применения sleep(), а вместо этого задействовать системные объекты синхронизации (mutex, event, semaphore e.t.c) и ф-ции ожидания срабатывания объектов синхронизации


YDV   (2003-04-14 17:27:00) [3]

спасибо за ответы !...

>sniknik:

с sleep реально помагло !!! получилось примерно так:

repeat
//...
sleep(1000);
if t=my_time then
if t<>was then begin
//...что-нибудь делаем
was:=t
end;
//...
until terminated;


>Leo-pro:

c Timer-ом у меня не получится:
через каждые 20 минут прога срабатывает и делает ресурсоемкие расчеты и передачи, кроме того еще должна отрабатывать несколько полезностей, которые могут выполнится одновременно с этими расчетами- вот и пришлось поток использовать.


Leo-pro   (2003-04-14 13:25:00) [4]

Используй Timer


sniknik   (2003-04-13 20:52:00) [5]

не проверяй постоянно а делай sleep(20мин*60сек*1000) между запусками.


Наверх

Титульная страница Поиск, карта сайта Написать письмо