中文

将 Compare-and-Swap 归约为共识数一的原语

数据结构与算法 2018-08-21 v3 分布式、并行与集群计算

摘要

一个对象的共识数是可使用任意数量的该对象实例和读写寄存器解决二进制共识的进程最大数目。Herlihy [6] 在其开创性工作中表明,若一个对象的共识数为 n,则存在一种通用构造,用于无等待且可线性化地实现在 n 个进程间共享的任意非平凡并发对象或数据结构。因此,像 compare-and-swap 这样具有无限共识数及相应指令的同步对象可视为“强”的。另一方面,像 fetch-and-add 这样共识数为二及相应 fetch-and-add 指令的同步对象可视为“弱”的。Ellen 等人 [2] 近期观察到,支持两个弱指令的对象也能像支持一个强指令的对象一样达到无限共识数。利用 Herlihy 的通用构造,这意味着忽略效率考量,可仅使用弱指令设计任意并发数据结构或算法。然而,弱指令的组合是否真的强大到可高效替代强指令(如 compare-and-swap)而不产生巨大的时间或空间开销?本文回答该问题:给出一种 O(1) 时间无等待且可线性化的 compare-and-swap 寄存器实现,该寄存器在 n 个进程间共享,使用读写寄存器与 O(1) 个支持两个同步原语 half-max 和 max-write 的寄存器,每个原语共识数均为一。因此,任何使用读写与 compare-and-swap 寄存器解决任意同步问题的算法,都可转换为具有相同渐近时间复杂度且仅使用共识数一指令的算法。

关键词

引用

@article{arxiv.1802.03844,
  title  = {Reducing Compare-and-Swap to Consensus Number One Primitives},
  author = {Pankaj Khanchandani and Roger Wattenhofer},
  journal= {arXiv preprint arXiv:1802.03844},
  year   = {2018}
}