Abstract
In this article, we consider concurrent programs in which the shared state consists of instances of linearizable abstract data types (ADTs). 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.
Original language | English |
---|---|
Article number | a21 |
Journal | ACM Transactions on Parallel Computing |
Volume | 3 |
Issue number | 4 |
DOIs | |
State | Published - Mar 2017 |
Keywords
- Abstract data types
- Automatic locking
- Concurrency
- Semantics
- Transactions
All Science Journal Classification (ASJC) codes
- Software
- Modelling and Simulation
- Hardware and Architecture
- Computer Science Applications
- Computational Theory and Mathematics