Posix互斥体协议与具有不同调度策略的线程的交互

时间:2018-12-07 17:38:07

标签: multithreading pthreads thread-priority priority-inversion

在创建Posix互斥锁时,我们可以指定用于处理优先级的协议:PTHREAD_PRIO_NONEPTHREAD_PRIO_INHERITPTHREAD_PRIO_PROTECT。在保护情况下,我们还设置了一个上限,该上限必须在所使用的调度程序的范围内。

根据sched_get_priority_min()sched_get_priority_max()的报告,这些功能如何与同一进程中的线程如何交互,这些线程具有不同的调度策略,这些调度策略可能不会具有重叠的优先级范围,因此该标准似乎并不明确。也许我找的地方不对。

问题:

  • 对于某个线程获取一个上限(该上限超出了该线程的当前调度策略范围)的互斥锁,何时发生标准定义?

  • 标准是否说当具有不允许高优先级的调度策略的低优先级线程持有PTHREAD_PRIO_INHERIT的互斥锁,并且试图通过线程锁定该互斥锁时会发生什么?低优先级线程的策略无法实现调度策略和优先级?

  • 如果没有标准定义(或者实现方式有所不同),实现方式会做什么?

我知道保持调度策略的一致性可以避免这些问题。

0 个答案:

没有答案