中文

一种针对Promise的所有权策略与死锁检测器

编程语言 2021-03-04 v1

摘要

任务并行程序在某些限制下通常享有死锁自由,例如使用结构化连接操作(如Cilk和X10中),或使用异步任务future配合Known Joins或Transitive Joins等避死锁策略。然而,promise作为并行任务中流行的同步原语,并不享有死锁自由保证。Promise会表现出类死锁缺陷;但死锁的概念目前对promise而言尚未明确定义。为应对这些挑战,我们提出一种所有权语义,其中每个promise关联于当前意图完成它的任务。所有权可立即识别任务未能完成其负责promise的缺陷。所有权进一步支持讨论任务与promise间的死锁环,并使我们能为promise引入类死锁缺陷的稳健定义。此情境下的环检测并非易事,因为它与promise所有权的变更并发进行。我们提供了一种无锁算法用于精确运行时死锁检测。我们展示了如何在TSO以及Java和C++内存模型下获得算法正确性所需的内存一致性准则。一项评估将我们的检测算法在基准程序上的执行时间与内存开销相对于未验证基线进行了比较。我们的检测器表现出12%(1.12×\times)的几何平均时间开销和6%(1.06×\times)的几何平均内存开销,优于以往死锁环检测方法。

关键词

引用

@article{arxiv.2101.01312,
  title  = {An Ownership Policy and Deadlock Detector for Promises},
  author = {Caleb Voss and Vivek Sarkar},
  journal= {arXiv preprint arXiv:2101.01312},
  year   = {2021}
}