Priority Inversion Boosting

A synchronization problem that can occur in a system with preemptive priorities is that threads that own system resources may not be able to run when other, higher priority threads are executing. This can cause a situation in which a thread remains blocked on a resource owned by a thread that is unable to run. If threads at a higher priority than the resource owning thread do not block, the resource may never be freed. To prevent this problem, the system uses a technique called priority inversion prevention in which the system boosts the priority of the thread that owns a resource to at least the priority of any thread that blocks on the resource.

The Windows 95 time slicer's algorithm for priority-inversion-prevention is associative. This means that, once a priority inversion boost is in place, the boosted thread maintains the same priority as the boosting thread.

When threads are suspended by events not related to blocking on resources, they will simply lose their current time slice, and will not be block boosted.