Java 实时规范表明它提供了处理优先级反转情况的工具,例如优先级继承和优先级上限协议(protocol)。
On POSIX ,有一个pthread_mutexattr_getprotocol
可以设置用来解决这个问题的协议(protocol)
PTHREAD_PRIO_NONE
PTHREAD_PRIO_INHERIT //(PIP)
PTHREAD_PRIO_PROTECT //(PCP)
我想知道这在实时 Java 上的等效性。
谢谢。
最佳答案
需要符合 RTSJ 的实现至少支持优先级继承;优先级上限是可选的。例如,IBM WebSphere Real Time 支持优先级继承并依赖操作系统为所有 Java 锁提供优先级继承(这意味着总是有一个 pthread 互斥锁与任何锁定的对象关联,尽管我们仍然有办法使它比否则听起来,尤其是对于实际上没有争用的锁)。传统的非实时 JVM 倾向于使用自旋锁来加速短期持有的锁,但不能在实时 JVM 中使用,因为当线程以不同的优先级运行时(对于 SCHED_RR/SCHED_FIFO 策略),它们会引入活锁问题, 无论如何,在更高优先级优先的地方,句号)。
关于java - Real Time Java 如何避免优先级倒置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093177/