Нам нужен рабочий сервер здесь, на работе, и я в настоящее время играю с Quartz.net, но идея создания моей собственной привлекательности для меня.По крайней мере, понимание того, что Quartz.net может делать под прикрытием, не может повредить моему пониманию / шансам использовать его более эффективно.
Итак, мой вопрос, как бы вы пошли на то, чтобы получить и уволить работу с темы без опроса?Если вы проверяете свой «магазин работ» каждые 2 минуты на наличие работ, которые нужно уволить, у вас будет задержка примерно на 2 минуты.Если вы уменьшите время опроса, вы увеличите нагрузку на свой склад вакансий, и все равно не получите истинного времени запуска.Вы можете предварительно загрузить задания для следующего двухминутного сегмента и перевести потоки в спящий режим на оставшееся время, чтобы они запускались в нужное время, но это выглядит глупо и может привести к проблемам, если время опроса велико (удаление, перепланирование и т. Д.). I 'Я анализирую Кварц, чтобы выяснить, как он это делает, но мне было интересно, упустил ли я что-то фундаментальное.
РЕДАКТИРОВАТЬ:
Многопоточная структура, подобная описанной вначале Кевином, кажется, вам СЛЕДУЕТ сделатьработа сервера.Это дает вам максимальную гибкость при минимальных затратах.Поскольку потоки - это лакомый кусочек для работы с большинством людей (может быть, только со мной :), более простой пример опроса выполнит работу в 90% случаев за счет потери гибкости и больших накладных расходов.
С другой стороны, если вы не делаете его однопоточным с выполнением одного задания, вам все равно придется иметь дело с многопоточностью.Можно также пойти на кабана и выяснить сигнализацию.
Я также согласен с Кевином в том, что вещи, которые вы утверждаете, вы получаете бесплатно в примере с опросом БД, на самом деле не бесплатны.Вы собираетесь кодировать вещи так же, как если бы это было потоковое / ожидающее приложение.Что делать, если ваш сервер заданий на опрос дБ взорвется в середине работы?Оба будут полагаться на какое-то долговременное хранилище для отслеживания своего состояния в случае аварии.
Что если вы переместите 'хранилище заданий' на уровень абстракции, и он не будет основан на обычном ACID (верно?срок?) база данных.Теперь то, на чем я полагаю, что многие из ваших «бесплатных» материалов больше не доступны (транзакции?).