【问题标题】:Does happen-before relationship impact priority inversion?先发生关系会影响优先级倒置吗?
【发布时间】:2015-11-08 06:03:49
【问题描述】:

我想知道诸如volatile 变量或finally 块释放锁之类的发生前关系是否与优先级反转有关?我知道这些强加了一种发生之前的关系,编译器无法重新排序指令。它是否也会影响 优先级反转,还是它们是独立的概念?谁能给我一个例子来更好地理解这一点?

【问题讨论】:

  • 我认为优先级倒置与您提到的其他任何事情完全无关。优先级倒置是关于调度不同优先级的任务,volatilefinally 可能与此有什么关系?
  • 优先级反转可能涉及一个锁(不)被释放,是的。但我不确定您在优先级反转和内存屏障/指令重新排序之间询问什么联系。你能澄清你在问什么吗?你认为可能有什么联系?

标签: java multithreading concurrency happens-before priority-inversion


【解决方案1】:

不同的概念。 “优先级反转”的想法是,如果某个高优先级线程 P 被阻塞,等待低优先级线程 L 做某事,那么操作系统暂时将 L 的优先级提升到至少为P的优先级高。

“发生在之前”是 Java 语言规范中的一项保证,可帮助我们推断一个线程所做的内存更新是否以及何时对其他线程可见。

【讨论】:

    猜你喜欢
    • 2014-10-27
    • 2012-05-29
    • 2019-08-23
    • 2017-02-17
    • 1970-01-01
    • 2019-04-02
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多