“快速路径”无控制同步是什么意思?
2022-09-04 05:54:14
摘自JCIP书的“性能和可扩展性”一章:
同步机制针对未控制的情况进行了优化(易失性始终是未保持的),在撰写本文时,对于大多数系统,“快速路径”未保持同步的性能成本范围为20至250个时钟周期。
作者在这里所说的快速路径无控制同步是什么意思?
摘自JCIP书的“性能和可扩展性”一章:
同步机制针对未控制的情况进行了优化(易失性始终是未保持的),在撰写本文时,对于大多数系统,“快速路径”未保持同步的性能成本范围为20至250个时钟周期。
作者在这里所说的快速路径无控制同步是什么意思?
这里有两个不同的概念。
慢速路径与快速路径代码
这是识别机器特定二进制代码的生产者的另一种方法。
使用 HotSpot VM,慢速路径代码是由C++实现生成的二进制代码,其中快速路径代码是指由 JIT 编译器生成的代码。
一般来说,快速路径代码更加优化。要完全理解JIT编译器,维基百科是一个很好的起点。
未控制同步和争用同步
Java的同步结构(监视器)具有所有权的概念。当线程尝试锁定(获得)监视器时,它可以被锁定(由另一个线程拥有)或解锁。
未控制的同步发生在两种不同的方案中:
另一方面,争用同步意味着在所有者线程释放监视器锁之前,线程将被阻塞。
回答问题
通过快速路径无控制同步,作者意味着在最便宜的情况下最快的字节码转换(快速路径)(无控制同步)。
我不熟悉本书的主题,但总的来说,“快速路径”是一个特定的可能控制流分支,它比其他分支更有效,因此是首选,但不能处理复杂的情况。
我假设这本书是在谈论Java的块/限定符。在这种情况下,快速路径很可能是很容易检测到没有其他线程访问相同数据的路径。因此,本书要说的是,在只有一个线程实际使用对象的情况下,实现已经过优化,具有最佳性能,而不是在多个线程的情况下,并且同步必须在它们之间进行调解。synchronized
synchronized