Writing concurrent code that is both correct and efficient is notoriously difficult. Thus, programmers often prefer to use synchronization abstractions, which render code simpler and easier to reason about. Despite a wealth of work on this topic, there is still a gap between the rich semantics provided by synchronization abstractions in modern programming languages -- specifically, \emph{fair} FIFO ordering of synchronization requests and support for \emph{abortable} operations -- and frameworks for implementing it correctly and efficiently. Supporting such semantics is critical given the rising popularity of constructs for asynchronous programming, such as coroutines, which abort frequently and are cheaper to suspend and resume compared to native threads. This paper introduces a new framework called \texttt{CancellableQueueSynchronizer} (CQS), which enables simple yet efficient implementations of a wide range of fair and abortable synchronization primitives: mutexes, semaphores, barriers, count-down latches, and blocking pools. Our main contribution is algorithmic, as implementing both fairness and abortability efficiently at this level of generality is non-trivial. Importantly, all our algorithms, including the CQS framework and the primitives built on top of it, come with \emph{formal proofs} in the Iris framework for Coq for many of their properties. These proofs are modular, so it is easy to show correctness for new primitives implemented on top of CQS. From a practical perspective, implementation of CQS for native threads on the JVM significantly improves Java's \texttt{AbstractQueuedSynchronizer}, the only practical abstraction offering similar semantics. In sum, \texttt{CancellableQueueSynchronizer} is the first framework to combine expressiveness with formal guarantees and solid practical performance.


翻译:编写既正确又高效的并发代码众所周知地困难。因此,程序员通常倾向于使用同步抽象,这使代码更简洁且更易于推理。尽管该领域已有大量工作,但现代编程语言中同步抽象所提供的丰富语义——具体而言,同步请求的 *公平* FIFO 排序以及对 *可中断* 操作的支持——与正确高效实现这些语义的框架之间仍存在差距。鉴于异步编程构造(如协程)日益流行,且这些构造频繁中断且挂起/恢复成本低于原生线程,支持此类语义至关重要。本文提出一个名为 \texttt{CancellableQueueSynchronizer} (CQS) 的新框架,能够简单而高效地实现多种公平且可中断的同步原语:互斥锁、信号量、屏障、倒计时门闩以及阻塞池。我们的主要贡献在于算法层面,因为在如此通用的层面上高效实现公平性与可中断性并非易事。重要的是,我们所有算法——包括 CQS 框架及其上构建的原语——均针对其多项属性,在面向 Coq 的 Iris 框架中提供了 *形式化证明*。这些证明是模块化的,因此容易证明基于 CQS 实现的新原语的正确性。从实践角度看,在 JVM 上针对原生线程实现的 CQS 显著改进了 Java 的 \texttt{AbstractQueuedSynchronizer}——这是唯一提供类似语义的实用抽象。总之,\texttt{CancellableQueueSynchronizer} 是首个将表达能力、形式化保证与扎实的实践性能相结合的框架。

0
下载
关闭预览

相关内容

Linux导论,Introduction to Linux,96页ppt
专知会员服务
82+阅读 · 2020年7月26日
机器学习入门的经验与建议
专知会员服务
94+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
105+阅读 · 2019年10月9日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
41+阅读 · 2019年10月9日
Hierarchically Structured Meta-learning
CreateAMind
27+阅读 · 2019年5月22日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
18+阅读 · 2018年12月24日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
vae 相关论文 表示学习 1
CreateAMind
12+阅读 · 2018年9月6日
美国化学会 (ACS) 北京代表处招聘
知社学术圈
11+阅读 · 2018年9月4日
【论文】变分推断(Variational inference)的总结
机器学习研究会
39+阅读 · 2017年11月16日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Arxiv
0+阅读 · 2023年7月6日
Arxiv
15+阅读 · 2020年12月17日
VIP会员
最新内容
AgentOps综述:智能体系统运维框架
专知会员服务
0+阅读 · 今天15:30
《美陆军最新条令:兵力防护》
专知会员服务
2+阅读 · 今天14:43
《人工智能的挑战:算法战的想象与现实》
专知会员服务
3+阅读 · 今天14:26
首场人工智能战争:Maven如何重塑武装冲突
专知会员服务
3+阅读 · 今天14:12
《通往人工通用智能之路上的均衡策略》
专知会员服务
7+阅读 · 6月3日
《Palantir的科技生态系统》
专知会员服务
17+阅读 · 6月2日
相关资讯
Hierarchically Structured Meta-learning
CreateAMind
27+阅读 · 2019年5月22日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
18+阅读 · 2018年12月24日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
vae 相关论文 表示学习 1
CreateAMind
12+阅读 · 2018年9月6日
美国化学会 (ACS) 北京代表处招聘
知社学术圈
11+阅读 · 2018年9月4日
【论文】变分推断(Variational inference)的总结
机器学习研究会
39+阅读 · 2017年11月16日
相关基金
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Top
微信扫码咨询专知VIP会员