奥伦·佐默;戈兰·格塔,盖伊;拉马林加姆,G。;穆利·萨吉夫 检查封装扩展操作的线性化能力。 (英语) Zbl 1405.68066号 Shao,Zhong(编辑),《编程语言与系统》。2014年4月5日至13日,在法国格勒诺布尔举行的第23届欧洲编程研讨会(ESOP 2014),作为欧洲软件理论与实践联合会议的一部分。诉讼程序。柏林:施普林格出版社(ISBN 978-3-642-54832-1/pbk)。计算机科学课堂讲稿8410,311-330(2014)。 概述:线性化对象(数据结构)提供了看起来像是原子执行的操作。现代主流语言提供了许多线性化的数据结构,简化了并发编程。然而,在实践中,程序员经常发现需要执行一系列操作(在可线性化的对象上),这些操作以原子方式执行,并为此目的编写扩展操作。这种扩展操作是原子性错误的常见来源。本文的重点是验证一组扩展操作(对于可线性化的库)本身是否可线性化。我们提出了几个简化验证问题的约简定理,以实现更高效的验证。我们首先介绍封装扩展的概念:这是一个扩展,(a)不引入新的共享状态(超出基本线性化库中的共享状态),(b)仅通过基本操作访问或修改共享状态。我们表明,封装扩展在实际应用中非常普遍。我们表明,封装扩展操作的线性化能力可以通过只考虑扩展操作出现一次的历史来验证,并与基本操作和扩展操作的原子出现交错。因此,该验证只需要考虑具有两个线程的历史,而一般线性化验证需要考虑具有无限数量线程的历史。我们表明,当操作满足某些属性时,每个扩展操作都可以独立于其他操作进行验证,从而实现进一步的约简。我们实现了一个简单的静态分析算法,该算法保守地验证了Java并发映射的封装扩展的线性化能力。我们给出的经验结果说明了约化定理的优点。有关整个系列,请参见[Zbl 1284.68032号]. 引用于1文件 MSC公司: 68甲19 其他编程范式(面向对象、顺序、并发、自动等) 68甲15 编程语言理论 68第05页 数据结构 60年第68季度 规范和验证(程序逻辑、模型检查等) 关键词:并发;线性化能力;原子性;验证;作文;延伸 PDF格式BibTeX公司 XML格式引用 \textit{O.Zomer}等人,Lect。注释计算。科学。8410311--330(2014;Zbl 1405.68066) 全文: 内政部