MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Error recovery in asynchronous systems
IEEE Transactions on Software Engineering
A future-based parallel language for a general-purpose highly-parallel computer
Selected papers of the second workshop on Languages and compilers for parallel computing
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
An exception handling model for parallel programming and its verification
SIGSOFT '91 Proceedings of the conference on Software for citical systems
Eiffel: the language
Parallel programming in Split-C
Proceedings of the 1993 ACM/IEEE conference on Supercomputing
Cilk: an efficient multithreaded runtime system
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
The implementation of the Cilk-5 multithreaded language
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Proceedings of the ACM 2000 conference on Java Grande
Adaptive optimization in the Jalapeño JVM
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Concurrent Exception Handling and Resolution in Distributed Object Systems
IEEE Transactions on Parallel and Distributed Systems
ACM Algorithm 395: Student's t-distribution
Communications of the ACM
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
FORTRAN 90 Programming
Lazy Task Creation: A Technique for Increasing the Granularity of Parallel Programs
IEEE Transactions on Parallel and Distributed Systems
Process structuring, synchronization, and recovery using atomic actions
Proceedings of an ACM conference on Language design for reliable software
System structure for software fault tolerance
Proceedings of the international conference on Reliable software
Exception handling and resolution in distributed object-oriented systems
ICDCS '96 Proceedings of the 16th International Conference on Distributed Computing Systems (ICDCS '96)
Coordinated Exception Handling in Distributed Object Systems: From Model to System Implementation
ICDCS '98 Proceedings of the The 18th International Conference on Distributed Computing Systems
Concurrent Exception Handling in a Distributed Object-Oriented Computing Environment
ICPADS '00 Proceedings of the Seventh International Conference on Parallel and Distributed Systems: Workshops
Proceedings of the 4th international symposium on Memory management
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
X10: an object-oriented approach to non-uniform cluster computing
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Parallel Programmability and the Chapel Language
International Journal of High Performance Computing Applications
Supporting exception handling for futures in Java
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Language and Virtual Machine Support for Efficient Fine-Grained Futures in Java
PACT '07 Proceedings of the 16th International Conference on Parallel Architecture and Compilation Techniques
Exception Handling and Software Fault Tolerance
IEEE Transactions on Computers
IEEE Transactions on Software Engineering
Hi-index | 0.00 |
Exception handling enables programmers to specify the behavior of a program when an exceptional event occurs at runtime. Exception handling, thus, facilitates software fault tolerance and the production of reliable and robust software systems. With the recent emergence of multi-processor systems and parallel programming constructs, techniques are needed that provide exception handling support in these environments that are intuitive and easy to use. Unfortunately, extant semantics of exception handling for concurrent settings is significantly more complex to reason about than their serial counterparts. In this paper, we investigate a similarly intuitive semantics for exception handling for the future parallel programming construct in Java. Futures are used by programmers to identify potentially asynchronous computations and to introduce parallelism into sequential programs. The intent of futures is to provide some performance benefits through the use of method-level concurrency while maintaining as-if-serial semantics that novice programmers can easily understand - the semantics of a program with futures is the same as that for an equivalent serial version of the program. We extend this model to provide as-if-serial exception handling semantics. Using this model our runtime delivers exceptions to the same point it would deliver them if the program was executed sequentially. We present the design and implementation of our approach and evaluate its efficiency using an open source Java virtual machine.