Automatic scalable atomicity via semantic locking

Automatic scalable atomicity via semantic locking
复制标题

通过语义锁定自动扩展原子性

DOI:
--
复制
发表时间:
2015
期刊:
ACM SIGPLAN Symposium on Principles & Practice of Parallel Programming
影响因子:
--
通讯作者:
Eran Yahav
Eran Yahav
中科院分区:
--
文献类型:
--
作者:
Guy Golan;G. Ramalingam;Shmuel Sagiv;Eran Yahav

文献摘要

被引文献

相似文献

在本文中,我们考虑共享状态由可线性化ADT(抽象数据类型)的实例组成的并发程序。我们提出了一种自动化的并发控制方法,该方法解决了一个常见的需求:需要原子地执行代码片段,该代码片段可能包含对多个ADT实例的多个ADT操作。我们提出了一种综合算法,通过插入确保原子性和死锁自由的悲观同步(不使用任何回滚机制),自动强制(在客户端程序中)给定代码片段的原子性。我们的算法将交换性规范作为额外的输入。本说明书为每对ADT操作指明了操作切换的条件。我们的算法通过允许并行执行通勤操作来实现更大的并行性。我们已经在Java编译器中实现了该综合算法,并将其应用于几个Java程序。我们的结果表明,我们的方法产生了高效且可扩展的同步。
In this paper, we consider concurrent programs in which the shared state consists of instances of linearizable ADTs (abstract data types). We present an automated approach to concurrency control that addresses a common need: the need to atomically execute a code fragment, which may contain multiple ADT operations on multiple ADT instances. We present a synthesis algorithm that automatically enforces atomicity of given code fragments (in a client program) by inserting pessimistic synchronization that guarantees atomicity and deadlock-freedom (without using any rollback mechanism). Our algorithm takes a commutativity specification as an extra input. This specification indicates for every pair of ADT operations the conditions under which the operations commute. Our algorithm enables greater parallelism by permitting commuting operations to execute concurrently. We have implemented the synthesis algorithm in a Java compiler, and applied it to several Java programs. Our results show that our approach produces efficient and scalable synchronization.