Таймеры Waitable или очередь таймера? За и против каждого?

У меня есть служба Windows, которая должна периодически делать определенные вещи. Я должен использовать waitable объекты - таймеры или очереди таймера?

Каковы за и против двух подходов? Действительно ли это - ложная дихотомия? Существует ли третий путь?

6
задан Roger Lipscombe 16 December 2009 в 15:39
поделиться

1 ответ

Таймер ожидания был разработан для активации кода через APC. Это довольно сложно сделать правильно из-за проблем с повторным входом, и это следует учитывать только в том случае, если вам нужно запустить код в потоке, который в противном случае занят, но блокируется достаточно часто, чтобы позволить APC работать.

Очереди таймеров очень легкие - веса объектов, их обратный вызов выполняется в (дешевом) потоке из пула потоков. Почти всегда подходит для периодической службы.

Третий способ - запустить поток при запуске службы и заблокировать его с помощью WaitForSingleObject (), время ожидания которой устанавливает период. Вы будете ждать события, которое сигнализирует о необходимости остановки службы. Очень легко начать,

8
ответ дан 16 December 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: