中文

无锁动态哈希表的开放寻址实现

分布式、并行与集群计算 2007-05-23 v4 数据结构与算法

摘要

我们提出了一种高效的无锁并行可访问哈希表算法,通过开放寻址方式实现,相较于传统的基于锁的实现,具有更具鲁棒性和可靠性。所谓“无锁”指的是保证在有限的步骤数内,至少总有一个进程能够完成其操作。在单处理器架构上,本方案的效率等同于顺序哈希表。在多处理器架构上,仅当所有处理器的速度相当时,亦可实现相同效果。该算法能够容纳速度差异较大或出现停滞的处理器。它可轻松地使用类 C 语言实现,对插入、删除或访问元素平均仅需常数时间。算法允许哈希表在需要时进行动态增减。无锁算法即便看似直观,也难以正确设计。就算法复杂度而言,我们转而借助交互式定理证明器 PVS 来获得形式化支持。我们采用标准的演绎验证技术,对算法的约200个不变性属性进行证明,并描述了如何通过 PVS 实现这一过程。

关键词

引用

@article{arxiv.cs/0303011,
  title  = {Lock-free dynamic hash tables with open addressing},
  author = {Hui Gao and Jan Friso Groote and Wim H. Hesselink},
  journal= {arXiv preprint arXiv:cs/0303011},
  year   = {2007}
}