“快速路径”无控制同步是什么意思?

摘自JCIP书“性能和可扩展性”一章:

同步机制针对未控制的情况进行了优化(易失性始终是未保持的),在撰写本文时,对于大多数系统,“快速路径”未保持同步的性能成本范围为20至250个时钟周期。

作者在这里所说的快速路径无控制同步是什么意思?


答案 1

这里有两个不同的概念。

  1. 快速路径和慢速路径代码
  2. 未控制同步和争用同步

慢速路径与快速路径代码

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

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

一般来说,快速路径代码更加优化。要完全理解JIT编译器,维基百科是一个很好的起点

未控制同步和争用同步

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

未控制的同步发生在两种不同的方案中:

  1. 解锁的监视器(所有权被束缚了)
  2. 监视器已由同一线程拥有

另一方面,争用同步意味着在所有者线程释放监视器锁之前,线程将被阻塞。

回答问题

通过快速路径无控制同步,作者意味着在最便宜的情况下最快的字节码转换(快速路径)(无控制同步)。


答案 2

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

我假设这本书是在谈论Java的块/限定符。在这种情况下,快速路径很可能是很容易检测到没有其他线程访问相同数据的路径。因此,本书要说的是,在只有一个线程实际使用对象的情况下,实现已经过优化,具有最佳性能,而不是在多个线程的情况下,并且同步必须在它们之间进行调解。synchronizedsynchronized


推荐