0%

并发容器中的分段锁

2019年3月25日 下午12:53
分段锁的原理 - 云+社区 - 腾讯云

独占锁-串行化的缺点:

  1. 在并发程序中,串行操作是会降低可伸缩性,并且上下文切换也会减低性能。
  2. 在锁上发生竞争时将通水导致这两种问题,使用独占锁时保护受限资源的时候,基本上是采用串行方式—-每次只能有一个线程能访问它
  3. 所以对于可伸缩性来说最大的威胁就是独占锁。

降低锁的竞争程度的三种方式:

  1. 减少锁的持有时间
  2. 降低锁的请求频率
  3. 使用带有协调机制的独占锁,这些机制允许更高的并发性。

独占锁:

  1. 在某些情况下我们可以将锁分解技术进一步扩展为一组独立对象上的锁进行分解,这成为分段锁
  2. 原理:
    1. 其实说的简单一点就是:容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,
  3. eg:
    1. 这就是ConcurrentHashMap所使用的锁分段技术,首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。