From: Daniel Cunha Date: 2008-11-13T10:26:57+09:00 Subject: Priority inheritance Hi, I would like to now if there is a library that implements priority inheritance in Ruby. I now that some people thing that you are already in trouble if you need to use this approach. But I really need to. A little about priority inheritance: "Imagine a system with two processes running, one at high priority and the other at a much lower priority. These processes share resources which are protected by locks. At some point, the low-priority process manages to run and obtains a lock for one of those resources. If the high-priority process then attempts to obtain the same lock, it will have to wait. Essentially, the low-priority process has trumped the high-priority process, at least for as long as it holds the contended lock. Now imagine a third process, one which uses a lot of processor time, and which has a priority between the other two. If that process starts to crank, it will push the low-priority process out of the CPU indefinitely. As a result, the third process can keep the highest-priority process out of the CPU indefinitely. This situation, called "priority inversion," tends to be followed by system failure, upset users, and unemployed engineers. There are a number of approaches to avoiding priority inversion, including lockless designs, carefully thought-out locking scenarios, and a technique known as priority inheritance. The priority inheritance method is simple in concept: when a process holds a lock, it should run at (at least) the priority of the highest-priority process waiting for the lock. When a lock is taken by a low-priority process, the priority of that process might need to be boosted until the lock is released." [1] More references about PI: [1] http://lwn.net/Articles/178253/ http://kernelnewbies.org/Linux_2_6_18 http://www.linuxdevices.com/articles/AT7168794919.html http://www.xenomai.org/documentation/trunk/html/api/group__synch.html Thanks in advance, Daniel Cunha