来自JCIP书的性能和可伸缩性章节
同步机制是针对非竞争情况(易失性总是不竞争的)进行优化的,在本文中,对于大多数系统来说,“快速路径”非竞争同步的性能成本从20到250个时钟周期不等。
作者所说的无竞争的快速路径同步是什么意思?
发布于 2013-09-01 14:55:07
我不熟悉这本书的主题,但一般来说,“快速路径”是一种特定的可能的控制流分支,它比其他分支的效率要高得多,因此优先考虑,但不能处理复杂的情况。
我假设这本书是在讨论Java的synchronized块/限定符。在这种情况下,快速路径很可能是一个很容易检测到没有其他线程访问相同数据的路径。那么,书中要说的是,对synchronized的实现进行了优化,使其在只有一个线程实际使用对象的情况下具有最佳的性能,而不是多个线程存在并且必须在其中进行同步的情况。
发布于 2014-07-19 16:32:11
这里有两个不同的概念。
慢路径与快速路径代码
这是识别机器特定二进制代码的生产者的另一种方法。
在HotSpot VM中,慢路径代码是由C++实现生成的二进制代码,其中快速路径代码是由JIT编译器生成的代码。
一般来说,快速路径代码的优化程度要高得多.要充分理解JIT编译器维基百科是一个很好的起点。。
非竞争和竞争同步
Java的同步构造(监测器有所有权的概念)。当线程试图锁定(获得监视器的所有权)时,可以锁定(由另一个线程拥有)或解锁。
无竞争的同步发生在两种不同的场景中:
另一方面,竞争同步意味着线程将被阻塞,直到所有者线程释放监视器锁为止。
回答问题
所谓快速路径无竞争同步,作者的意思是,在最便宜的情况下,最快的字节码转换(快速路径)(无竞争同步)。
发布于 2013-09-01 18:18:02
获取同步锁的第一步是单个易失性写入(监视器所有者字段)。如果锁是没有争议的,那么这就是将要发生的一切。
如果锁是有争议的,那么就会有各种上下文开关和其他机制来增加时钟周期。
https://stackoverflow.com/questions/18559463
复制相似问题