Proceedings Article10.1145/1094811.1094845
Safe futures for Java
Adam Welc,Suresh Jagannathan,Antony L. Hosking +2 more
- 12 Oct 2005
- Vol. 40, Iss: 10, pp 439-453
TL;DR: The definition and implementation of safe futures for Java are explored and it is indicated that for programs with modest mutation rates on shared data, applications can use futures to profitably exploit parallelism, without sacrificing safety.
read more
Abstract: A future is a simple and elegant abstraction that allows concurrency to be expressed often through a relatively small rewrite of a sequential program. In the absence of side-effects, futures serve as benign annotations that mark potentially concurrent regions of code. Unfortunately, when computation relies heavily on mutation as is the case in Java, its meaning is less clear, and much of its intended simplicity lost.This paper explores the definition and implementation of safe futures for Java. One can think of safe futures as truly transparent annotations on method calls, which designate opportunities for concurrency. Serial programs can be made concurrent simply by replacing standard method calls with future invocations. Most significantly, even though some parts of the program are executed concurrently and may indeed operate on shared data, the semblance of serial execution is nonetheless preserved. Thus, program reasoning is simplified since data dependencies present in a sequential program are not violated in a version augmented with safe futures.Besides presenting a programming model and API for safe futures, we formalize the safety conditions that must be satisfied to ensure equivalence between a sequential Java program and its future-annotated counterpart. A detailed implementation study is also provided. Our implementation exploits techniques such as object versioning and task revocation to guarantee necessary safety conditions. We also present an extensive experimental evaluation of our implementation to quantify overheads and limitations. Our experiments indicate that for programs with modest mutation rates on shared data, applications can use futures to profitably exploit parallelism, without sacrificing safety.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Grace: safe multithreaded programming for C/C++
Emery D. Berger,Ting Yang,Tongping Liu,Gene Novark +3 more
- 25 Oct 2009
TL;DR: Grace is presented, a software-only runtime system that eliminates concurrency errors for a class of multithreaded programs: those based on fork-join parallelism, and can achieve high scalability and performance while preventing concurrence errors.
•Proceedings Article
Parallel programming must be deterministic by default
Robert L. Bocchino,Vikram Adve,Sarita V. Adve,Marc Snir +3 more
- 30 Mar 2009
TL;DR: This work argues for a parallel programming model that is deterministic by default: deterministic behavior is guaranteed unless the programmer explicitly uses nondeterministic constructs, particularly challenging for modern object-oriented languages with expressive use of reference aliasing and updates to shared mutable state.
•Journal Article
A complete guide to the future
187
Software behavior oriented parallelization
Chen Ding,Xipeng Shen,Kirk Kelsey,Chris Tice,Ruke Huang,Chengliang Zhang +5 more
- 10 Jun 2007
TL;DR: The main goal of the paper is to demonstrate that the general protection can be made cost effective by three novel techniques: programmable speculation, critical-path minimization, and value-based correctness checking.
Mul-T: a high-performance parallel Lisp
David A. Kranz,Robert H. Halstead,E. Mohr +2 more
- 01 Jun 1990
TL;DR: Mul-T as discussed by the authors is a parallel Lisp system based on Multilisp's future construct that has been developed to run on an Encore Multimax multiprocessor.
161
References
Eraser: a dynamic data race detector for multithreaded programs
TL;DR: A new tool, called Eraser, is described, for dynamically detecting data races in lock-based multithreaded programs, which uses binary rewriting techniques to monitor every shared-monory reference and verify that consistent locking behavior is observed.
Software transactional memory
Nir N. Shavit,Dan Touitou +1 more
- 20 Aug 1995
TL;DR: STM is used to provide a general highly concurrent method for translating sequential object implementations to non-blocking ones based on implementing a k-word compare&swap STM-transaction, a novel software method for supporting flexible transactional programming of synchronization operations.
Featherweight Java: a minimal core calculus for Java and GJ
TL;DR: This work extends Featherweight Java with generic classes in the style of GJ and gives a detailed proof of type safety, which formalizes for the first time some of the key features ofGJ.
Software transactional memory for dynamic-sized data structures
Maurice Herlihy,Victor Luchangco,Mark Moir,William N. Scherer +3 more
- 13 Jul 2003
TL;DR: A new form of software transactional memory designed to support dynamic-sized data structures, and a novel non-blocking implementation of this STM that uses modular contention managers to ensure progress in practice.
Related Papers (5)
Emery D. Berger,Ting Yang,Tongping Liu,Gene Novark +3 more
- 25 Oct 2009
Christoph von Praun,Luis Ceze,Calin Cascaval +2 more
- 14 Mar 2007