中文

探寻最优并发性

分布式、并行与集群计算 2016-03-07 v1

摘要

实现并发数据结构通常始于定义其顺序规范。然而,当按原样使用时,非平凡的顺序数据结构(如链表、搜索树或哈希表)可能暴露不正确行为:丢失更新、不一致响应等。为确保正确性,操作共享数据的顺序代码段必须使用同步原语免受数据竞争,因此必须拒绝并发操作步调的某些调度。但我们能否确保不“过度使用”同步,即仅当并发调度违反正确性时才拒绝它?本文通过引入并发最优(concurrency-optimal)实现的概念正式处理该问题。程序的并发性在此定义为其接受并发调度(即其顺序实现步骤的交错)的能力。如果实现接受所有不违反程序正确性的交错,则它是并发最优的。我们探索了可表示为导出插入、删除和搜索操作的有向无环图形式的搜索数据结构的并发性质。我们首次证明,搜索数据结构的悲观(例如基于保守锁)与乐观可串行化(例如基于可串行化事务内存)实现在并发性方面不可比较。具体而言,存在简单的顺序代码交错,任何悲观(相应地,可串行化乐观)实现都不能接受,但可被可串行化乐观(相应地,悲观)实现接受。因此,这两类实现均非并发最优。

关键词

引用

@article{arxiv.1603.01384,
  title  = {In the Search of Optimal Concurrency},
  author = {Vincent Gramoli and Petr Kuznetsov and Srivatsan Ravi},
  journal= {arXiv preprint arXiv:1603.01384},
  year   = {2016}
}

备注

Extended version of results in arXiv:1203.4751