Multi-level priority queue scheduling is one of the best scheduling algorithms found in the theory of Operating Systems design. (Even some real-world operating systems use it.)
Essentially, the job of a scheduling algorithm is to sort set of tasks in some order based on certain criteria. The criteria could be first in first out, Least costly job first out, so on...
Such criteria typically take every task as of equal priority - but what if they are not? What if there is some urgent task that need to be processed on a faster pace irrespective of when it was placed in the queue or how long it is going to take? A good example could be, multimedia processes vs printing jobs.
Thats where techniques like Multi-level priority queues come into picture. They take priority into consideration while scheduling the jobs of different priority (and follow other procedures such as FIFO, Round-robin when the jobs are of equal priority).
Now, this is all well-known in the OS design and scheduling - but what if I told you this particular priority algorithms are used in one user-level library for scheduling your network traffic? Indeed the NanoMsg library is geared towards that.
Check this out: http://250bpm.com/blog:14
Happy coding.
Gopalakrishna (GK)
http://gk.palem.in/