Re: Queues, prioritization, changing priorities and algorithms
From: AlanR (alanroche2000_at_yahoo.com)
Date: 10/07/03
- Next message: Lorenzo: "INVIO XML SU HTTP"
- Previous message: Paul: "Re: newbie java/OOP question"
- In reply to: Brad BARCLAY: "Re: Queues, prioritization, changing priorities and algorithms"
- Next in thread: Phil...: "Re: Queues, prioritization, changing priorities and algorithms"
- Reply: Phil...: "Re: Queues, prioritization, changing priorities and algorithms"
- Reply: Mark A. Washburn: "Re: Queues, prioritization, changing priorities and algorithms"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: 7 Oct 2003 00:29:26 -0700
Had already looked at priority queues and done some research.
It is quite difficult to find something efficient where priorities get
increased after a certain time period to prevent starvation.
ie. Priority is not so efficient where priorities change. ie. I would
need to monitor the queue for "expired priorities" and then pop them
from the queue, and push them back on when the priority changes. In a
multithreaded environment the locking/synchronization of the data
structure would really slow things down.
Brad BARCLAY <bbarclay@jsyncmanager.org> wrote in message news:<Kq2gb.34681$ko%.3982@news04.bloor.is.net.cable.rogers.com>...
> AlanR wrote:
>
> > I have looked at using multiple LinkedLists, one for each priority,
> > but the cost of adding and removing items every time a priority
> > changes would be too high. ie. the suppliers to the queue are
> > multithreaded. The synchronization/locking would be too costly if the
> > queues also need to be locked every time an item's priority changes.
> > So I'm thinking of using a single linked list. This means there is no
> > need to synchronize the list when a priority changes. However, this
> > means that the consumer of the queue must iterate across the queue
> > every time it consumes. If the high priority items happen to be near
> > the back of the queue, this could get costly.
> >
> > Has anyone any experience, advice or info on this.
>
> Yes, you need a data structure called a "priority queue". These have
> been around for decades -- you should find all sorts of hits if you do a
> web search on this topic.
>
> Basically, what you want to do is to enqueue items based on their
> priority, as opposed to just sticking them at the back. In this way,
> you don't have to scan the queue each time you need to consume an item
> -- just take the item at the front.
>
> Brad BARCLAY
- Next message: Lorenzo: "INVIO XML SU HTTP"
- Previous message: Paul: "Re: newbie java/OOP question"
- In reply to: Brad BARCLAY: "Re: Queues, prioritization, changing priorities and algorithms"
- Next in thread: Phil...: "Re: Queues, prioritization, changing priorities and algorithms"
- Reply: Phil...: "Re: Queues, prioritization, changing priorities and algorithms"
- Reply: Mark A. Washburn: "Re: Queues, prioritization, changing priorities and algorithms"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|