Nested transactions: an approach to reliable distributed computing
Nested transactions: an approach to reliable distributed computing
Apologizing versus asking permission: optimistic concurrency control for abstract data types
ACM Transactions on Database Systems (TODS)
On-the-fly detection of data races for programs with nested fork-join parallelism
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
SIGMOD '93 Proceedings of the 1993 ACM SIGMOD international conference on Management of data
A status report on the OO7 OODBMS benchmarking effort
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Efficient optimistic concurrency control using loosely synchronized clocks
SIGMOD '95 Proceedings of the 1995 ACM SIGMOD international conference on Management of data
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Thin locks: featherweight synchronization for Java
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Ownership types for flexible alias protection
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Readings in database systems (3rd ed.)
Readings in database systems (3rd ed.)
On optimistic methods for concurrency control
ACM Transactions on Database Systems (TODS)
An efficient meta-lock for implementing ubiquitous synchronization
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Effective synchronization removal for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Type-based race detection for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Efficient and precise datarace detection for multithreaded object-oriented programs
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
A parallel java grande benchmark suite
Proceedings of the 2001 ACM/IEEE conference on Supercomputing
Ownership types for safe programming: preventing data races and deadlocks
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A real-time garbage collector with low overhead and consistent utilization
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
Comprehensive synchronization elimination for Java
Science of Computer Programming - Special issue on static analysis (SAS'99)
Static conflict analysis for multi-threaded object-oriented programs
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Hybrid dynamic data race detection
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
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
Atomizer: a dynamic atomicity checker for multithreaded programs
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 4th international symposium on Memory management
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Composable memory transactions
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
TxLinux: using and managing hardware transactional memory in an operating system
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
General and efficient locking without blocking
Proceedings of the 2008 ACM SIGPLAN workshop on Memory systems performance and correctness: held in conjunction with the Thirteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '08)
Irrevocable transactions and their applications
Proceedings of the twentieth annual symposium on Parallelism in algorithms and architectures
A Uniform Transactional Execution Environment for Java
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Design and implementation of transactional constructs for C/C++
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
NePaLTM: Design and Implementation of Nested Parallelism for Transactional Memory Systems
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
EventJava: An Extension of Java for Event Correlation
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Coqa: concurrent objects with quantized atomicity
CC'08/ETAPS'08 Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
Proceedings of the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Adaptive locks: Combining transactions and locks for efficient concurrency
Journal of Parallel and Distributed Computing
Software transactional memory validation – time and space considerations
Transactions on High-Performance Embedded Architectures and Compilers IV
Hi-index | 0.00 |
Concurrent data accesses in high-level languages like Java and C# are typically mediated using mutual-exclusion locks. Threads use locks to guard the operations performed while the lock is held, so that the lock's guarded operations can never be interleaved with operations of other threads that are guarded by the same lock. This way both atomicity and isolation properties of a thread's guarded operations are enforced. Recent proposals recognize that these properties can also be enforced by concurrency control protocols that avoid well-known problems associated with locking, by transplanting notions of transactions found in database systems to a programming language context. While higher-level than locks, software transactions incur significant implementation overhead. This overhead cannot be easily masked when there is little contention on the operations being guarded. We show how mutual-exclusion locks and transactions can be reconciled transparently within Java's monitor abstraction. We have implemented monitors for Java that execute using locks when contention is low and switch over to transactions when concurrent attempts to enter the monitor are detected. We formally argue the correctness of our solution with respect to Java's execution semantics and provide a detailed performance evaluation for different workloads and varying levels of contention. We demonstrate that our implementation has low overheads in the uncontended case (7% on average) and that significant performance improvements (up to 3×) can be achieved from running contended monitors transactionally.