Language Support for Loosely Coupled Distributed Programs
IEEE Transactions on Software Engineering - Special issue on distributed systems
Introduction to algorithms
Transactional memory: architectural support for lock-free data structures
ISCA '93 Proceedings of the 20th annual international symposium on computer architecture
Region-based memory management
Information and Computation
Guardians and Actions: Linguistic Support for Robust, Distributed Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Distributed processes: a concurrent programming concept
Communications of the ACM
Designing enterprise applications with the J2EE platform
Designing enterprise applications with the J2EE platform
Transactional lock-free execution of lock-based programs
Proceedings of the 10th international conference on Architectural support for programming languages and operating systems
The Real-Time Specification for Java
Computer
Process structuring, synchronization, and recovery using atomic actions
Proceedings of an ACM conference on Language design for reliable software
Software transactional memory for dynamic-sized data structures
Proceedings of the twenty-second annual symposium on Principles of distributed computing
Language support for lightweight transactions
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Preemption-Based Avoidance of Priority Inversion for Java
ICPP '04 Proceedings of the 2004 International Conference on Parallel Processing
Programming with transactional coherence and consistency (TCC)
ASPLOS XI Proceedings of the 11th international conference on Architectural support for programming languages and operating systems
Web Services Platform Architecture: SOAP, WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging and More
Composable memory transactions
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
Optimizing memory transactions
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Science of Computer Programming - Special issue: Synchronization and concurrency in object-oriented languages
TxLinux: using and managing hardware transactional memory in an operating system
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
Bridging Java and AspectJ through explicit join points
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Transactions with isolation and cooperation
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
TxLinux and MetaTM: transactional memory and the operating system
Communications of the ACM - Enterprise information integration: and other tools for merging data
Bristlecone: A Language for Robust Software Systems
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Cooperative aspect-oriented programming
Science of Computer Programming
Unifying Memory and Database Transactions
Euro-Par '09 Proceedings of the 15th International Euro-Par Conference on Parallel Processing
Adaptive locks: Combining transactions and locks for efficient concurrency
Journal of Parallel and Distributed Computing
Exceptions and transactions in C++
HotPar'09 Proceedings of the First USENIX conference on Hot topics in parallelism
Self-replicating objects for multicore platforms
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Atomic boxes: coordinated exception handling with transactional memory
Proceedings of the 25th European conference on Object-oriented programming
Robust architectural support for transactional memory in the power architecture
Proceedings of the 40th Annual International Symposium on Computer Architecture
Hi-index | 0.00 |
In recent work we showed how to implement a new atomic keyword as an extension to the Java programming language. It allows a program to perform a series of heap accesses atomically without needing to use mutual exclusion locks. We showed that data structures built using it could perform well and scale to large multi-processor systems. In this paper we extend our system in two ways. Firstly, we show how to provide an explicit 'abort' operation to abandon execution of an atomic block and to automatically undo any updates made within it. Secondly, we show how to perform external I/O within an atomic block. During our work we found that it was surprisingly difficult to support these operations without opening loopholes through which the programmer could subvert language-based security mechanisms. Our final design is based on a 'external action' abstraction, allowing code running within an atomic block to request that a given pre-registered operation be executed outside the block.