跳跃表与优先队列的深入解析
1. 并发跳跃表
跳跃表是一种概率性数据结构,它能在不进行重新平衡的情况下实现对数级别的搜索。这里介绍两种高度并发的跳跃表实现: LazySkipList 和 LockFreeSkipList 。
- LazySkipList类 :
add()和remove()方法采用乐观细粒度锁。具体来说,这些方法在搜索目标节点时不进行加锁,只有在找到目标节点时才获取锁并进行验证。而contains()方法通常是最常用的,它是无等待的。 - LockFreeSkipList类 :
add()和remove()方法是无锁的,基于之前的LockFreeList类实现。同样,contains()方法也是无等待的。
下面通过一个例子来详细说明 contains() 方法的执行过程。假设有一个跳跃表,节点包含键值 9, 5, 18, 11, 25, 15, 8, 2, 3, 2, 1, 0 。当调用 contains(18) 时:
1. 从头节点的最高层开始遍历。
2. curr 字段在第3层前进到尾节点,由于其键值大于18,
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



