Unblock Boosting

If, before completing a time slice, a thread blocks and unblocks but is left at the same priority, it will effectively have its time slice reduced to the time it uses between the unblock and block operations. This is because the scheduler does not have any reason to schedule the newly unblocked thread before any other threads running at the same priority. This gives threads that do not need to block on resources a great advantage when competing for processor time.

To allow threads which block and unblock to compete effectively for processor time, the time slicer dynamically boosts the priority of a thread when it blocks.