Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2011, 18:47   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию Реализация планировщика задач.

Доброго времени суток!

Как по другому реализовать планнировщик задач?
Именно саму задачу...

1 задача = 1 TThread не вариант...
Есть выход?

Человек_Борща вне форума Ответить с цитированием
Старый 20.10.2011, 19:14   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну поидее достаточно ждать ближайшего события, а не всех.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.10.2011, 19:25   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Пожалуйста, можно чуточку подробнее? Как ждать? Что использовать? Где почитать чего-нибудь?
Человек_Борща вне форума Ответить с цитированием
Старый 20.10.2011, 19:36   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Хотите знать, чтобы применял я?
естественно нам нужно как то хранить будущие события, не важно как, для меня важно чтоб мы всегда с легкостью могли получить ближайшее событие.
далее применяю WaitableTimer, устанавливая на нужное время(если добавляется новое более ближнее событие, то перезапускаем таймер).
Создание таймера это CreateWaitableTimer.
Установка времени таймера это SetWaitableTimer.
Сброс таймера это CancelWaitableTimer.
Уничтожение как обычно через CloseHandle.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.10.2011, 19:39   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Один таймер с некоторой частотой проверяет весь список задач и если время наступило делает какие-то действия для этой задачи. Вроде и тема недавно подобная была
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.10.2011, 19:48   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Один таймер с некоторой частотой проверяет весь список задач и если время наступило делает какие-то действия для этой задачи.
я считаю что он должен быть отсортирован, что бы не скакать по всему списку, достаточно идти будет снизу ввверх, до первого не подходящего события.
(это вашим методом)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.10.2011, 19:52   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

http://msdn.microsoft.com/en-us/libr...12(VS.85).aspx

Довольно интересно. А вот как отреагировать на завершение работы таймера? Как об этом узнать и сделать "дело"?

Ведь WaitForSingleObject повесит программу. Опять TThread...

Аватар, тогда смысл предложенного Фениксом?
Если можно обычный tTimer воткнуть..

Последний раз редактировалось Человек_Борща; 20.10.2011 в 19:54.
Человек_Борща вне форума Ответить с цитированием
Старый 20.10.2011, 19:59   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Аватар, тогда смысл предложенного Фениксом?
а мы про разные методы.

http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx
4-ый параметр.

или
Цитата:
Ведь WaitForSingleObject повесит программу. Опять TThread...
лишь один.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 20.10.2011 в 20:02.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.10.2011, 21:04   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

То что я предложил имеет смысл в случае когда список задачен ограничен (десяток, ну несколько десятков). Если временная точность выполнения задания не секунда в секунду, то интервал таймера можно минуту и больше ставить. Если планировщик активен и редактируется список заданий, то это мало влияет на цикл таймера. Естественно список в памяти, в нем отмечается что задание запущено, завершено и прочее. И отсортирован по времени запуска заданий
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.10.2011, 22:07   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
То что я предложил имеет смысл в случае когда список задачен ограничен
если учесть сортировку что я предложил, то можно и не ограничивать(ну, почти)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация stopvirus Общие вопросы Delphi 12 24.12.2010 19:44
Реализация SGN на С Jos Помощь студентам 0 07.12.2010 23:12
Имитатор планировщика процессов Delphi marat2201 Помощь студентам 0 14.06.2010 23:43
Задание для планировщика MySQL. Вычисление разницв в часах между датами,временем. Avalonix SQL, базы данных 0 23.03.2010 13:47
Ctrl+Z реализация delphin100 Общие вопросы Delphi 6 10.09.2008 06:59