“快速路径”无竞争同步是什么意思?

时间:2013-09-01 14:39:22

标签: java concurrency synchronization volatile

来自JCIP book性能和可伸缩性章节:

  

同步机制针对无竞争优化进行了优化   case(volatile总是无条件的),在写这篇文章的时候   “快速路径”无竞争同步范围的性能成本   大多数系统的时钟周期为20到250个。

作者在这里通过快速路径无竞争同步意味着什么?

3 个答案:

答案 0 :(得分:19)

这里有两个截然不同的概念。

  1. 快速路径和慢速路径代码
  2. 无争议和争用同步
  3. 慢速路径与快速路径代码

    这是识别机器特定二进制代码的生产者的另一种方法。

    使用HotSpot VM,慢速路径代码是由C ++实现生成的二进制代码,其中快速路径代码表示由JIT编译器生成的代码。

    从一般意义上讲,快速路径代码更加优化。完全理解JIT编译器wikipedia is a good place to start

    无争议和争用同步

    Java的同步构造(Monitors)具有所有权的概念。当一个线程试图锁定(获得所有权)监视器时,它可以被锁定(由另一个线程拥有)或解锁。

    无争议的同步发生在两种不同的场景中:

    1. 解锁显示器(所有权获得了掠夺)
    2. 监视器已由同一线程拥有
    3. 另一方面,争用同步意味着线程将被阻塞,直到所有者线程释放监视器锁。

      回答问题

      通过快速路径无竞争同步,作者意味着,在最便宜的场景中最快的字节码转换(快速路径)(无竞争同步)。

答案 1 :(得分:8)

我不熟悉本书的主题,但一般来说,“快速路径”是一个特定的可能控制流分支,它比其他分支明显更有效,因此是首选,但无法处理复杂的情况。

我认为这本书正在谈论Java的synchronized块/限定符。在这种情况下,快速路径很可能是容易检测到没有其他线程访问相同数据的路径。那么,本书所说的是synchronized的实现已被优化,以便在只有一个线程实际使用该对象的情况下具有最佳性能,而不是多线程的情况和同步必须实际调解它们之间。

答案 2 :(得分:2)

获取同步锁定的第一步是单个易失性写入(监视所有者字段)。如果锁是无争议的,那就是将要发生的一切。

如果锁定有争议,那么将会有各种上下文切换和其他机制,这将增加时钟周期。