А если порядок просмотра списка запуска и есть приоритет? Я похожий механизм использовал, вполне хорош. То есть важным задачам назначается приоритет повыше, неважным - пониже. Задачи могут запускать друг друга. Перечитал. Видимо там в самой задаче обрамляющее условие
if ( needtodo==true) {
// Do something
} чтобы максимально быстро на выход, если ничего не надо.