为了避免优先级倒置问题,必须让低优先级线程尽快释放临界资源。目前解决优先级倒置通常有两种方法,一种是优先级继承(priority inheritance),另一种是优先级顶置;
在优先级继承方案中,当高优先级线程在等待低优先级的线程占有的临界资源时,让低优先级线程继承高优先级线程的优先级,即把低优先级线程的优先级提高到高于优先级的线程的优先级。当低优先级释放高高优先级线程等待的临界资源时,立即把其优先级降低到原来的优先级。采用这种方法可以有效解决优先级倒置问题。这种方法的缺点是,动态改变线程的优先级耗费了大量的时间。
在使用互斥锁的情况下,可以设置互斥锁属性的协议为:PTHREAD_PRIO_INHERIT;