Re: A quota based lock
On 08.08.2011 20:57, markspace wrote:
On 8/8/2011 11:39 AM, Knute Johnson wrote:
No priority scheme will ever be truly fair. I'll bet you could get
pretty close without being too complicated. I'll think about it some
more.
A simple priority system might involve multiple queues, where the high
priority queues are serviced X times more than the lower ones.
E.g., two queues. Queue A gets 10 jobs executed for each 1 job that
queue B gets executed. But because queue B is always guaranteed to be
serviced eventually, there is no starvation.
This is a simple step up from round-robin service (which is what Eric
proposed). There are many algorithms existing. Check out any text on OSs
and job scheduling.
Another idea would be to take the time a task has access to the
resource, sum up per task category and for the next task pick the first
one from the category which is furthest below its specified share
(percentage). Basically your approach measures executions and this
approach measures actual resource usage time.
An interesting thing to learn would be whether tasks are simply executed
by threads calling a method or whether tasks can also be submitted (e.g.
as Runnable or similar). That would also affect the internal layout and
the way scheduling could be done.
Kind regards
robert
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/