据我了解,真正保证这一点的唯一方法是编写一个自己可以运行的锁。但是,如果使用@
xryl669的答案建议使用线程优先级和优先级继承,则肯定值得考虑。
要自己实现它,您将需要条件变量和等待的低/高优先级线程数的计数。
就所需的概念和API而言,它与实现读/写锁相对类似(但显然,所需的语义是完全不同的-但是,如果您了解了r /
w锁的工作原理,则可以将了解如何实现您想要的东西)。
您可以在此处看到读写锁的实现:
http://ptgmedia.pearsoncmg.com/images/0201633922/sourcepre/rwlock.c
在较低优先级的线程中,您需要等待高优先级的线程完成,就像读者等待编写器完成一样。
(以上代码的书摘自这本书,也是很棒的posix线程书,网址为http://www.informit.com/store/product.aspx?isbn=0201633922)



