代码之家  ›  专栏  ›  技术社区  ›  grayger

锁条应用领域

  •  1
  • grayger  · 技术社区  · 15 年前

    JDK的ConcurrentHashMap使用锁条技术。最小化锁开销是个好主意。是否有其他库或工具可以利用它? 例如,数据库引擎是否使用它?

    如果这项技术在其他领域用处不大,那么它的局限性是什么?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Harisankar Krishna Swamy    13 年前

    当有一种方法可以在不损害数据完整性的情况下将高争用锁分为多个锁时,锁条带化非常有用。如果这是可能的或不应该采取一些想法,并不总是这样。数据结构也是决定的因素。因此,如果我们使用一个大数组来实现一个哈希表,那么对整个哈希表使用一个锁进行同步将导致线程按顺序访问数据结构。如果这是哈希表上的同一个位置,那么这是必要的,但是,如果它们正在访问表的两个极端呢。

    使用锁条显然可以节省很多时间。多次运行 scenario 几乎一半的执行时间。

    锁条带化的缺点是很难得到受条带化影响的数据结构的状态。在这个例子中,表的大小,或者试图列出/枚举整个表可能会很麻烦,因为我们需要获取所有的条带锁。