![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
запуск в определенный момент времени !?
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) между запусками.