Жонглирование приоритетной очередью

У меня есть одна коллекция элементов, которые требуют периодического обновления. Пункты имеют вес в том, что некоторые должны обслуживаться чаще, чем другие. Однако я должен обслуживать все элементы в течение определенного времени (т. е. я не хочу, чтобы были элементы, которые никогда не будут обработаны).

Если бы все элементы имели одинаковый вес, было бы достаточно простого FIFO. Но более приоритетные должны иметь возможность включаться, поэтому я считаю, что указана приоритетная очередь. Вопрос в том, что определяет приоритет? Я полагаю, что это функция взвешивания и времени, прошедшего с момента последнего обслуживания. Но как определить форму этой функции, чтобы ни один элемент не остался внизу кучи?


person Julian Gold    schedule 22.11.2011    source источник


Ответы (1)


Я бы отсортировал их по времени в очереди, а затем по приоритету. При добавлении нового элемента в очередь применяется порог, основанный на времени, поэтому при добавлении нового элемента он не может быть помещен выше, чем те, которые превысили максимально допустимое время в очереди.

person Darren Lewis    schedule 22.11.2011