Random number generators: good ones are hard to find
Communications of the ACM
ACM Computing Surveys (CSUR)
Threads primer: a guide to multithreaded programming
Threads primer: a guide to multithreaded programming
The synergy between non-blocking synchronization and operating system structure
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Lock-free data structures
Thin locks: featherweight synchronization for Java
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Space and time-efficient hashing of garbage-collected objects
Theory and Practice of Object Systems - Special issue on selected papers from ESEC/FSE'97 (Joint Meeting of the European Software Engineering Conference and ACM Foundations of Software Engineering)
An efficient meta-lock for implementing ubiquitous synchronization
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A study of locking objects with bimodal fields
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Monitors: an operating system structuring concept
Communications of the ACM
Java server performance: a case study of building efficient, scalable Jvms
IBM Systems Journal
A Lightweight Java Virtual Machine for a Stack-Based Microprocessor
Proceedings of the 2nd Java Virtual Machine Research and Technology Symposium
ACM SIGOPS Operating Systems Review
Optimizing memory transactions
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Detecting data races using dynamic escape analysis based on read barrier
VM'04 Proceedings of the 3rd conference on Virtual Machine Research And Technology Symposium - Volume 3
Transient blocking synchronization
Transient blocking synchronization
Fine-grained adaptive biased locking
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
DISC'06 Proceedings of the 20th international conference on Distributed Computing
Dynamic monitor allocation in the Java virtual machine
Proceedings of the 11th International Workshop on Java Technologies for Real-time and Embedded Systems
Hi-index | 0.00 |
The JavaTM Programming Language permits synchronization operations (lock, unlock, wait, notify) on any object. Synchronization is very common in applications and is endemic in the library code upon which applications depend. It is therefore critical that a monitor implementation be both space-efficient and time-efficient. We present a locking protocol, the Relaxed-Lock, that satisfies those requirements. The Relaxed-Lock is reasonably compact, using only one machine word in the object header. It is fast, requiring in the uncontested case only one atomic compare-and-swap to lock a monitor and no atomic instructions to release a monitor. The Relaxed-Lock protocol is unique in that it admits a benign data race in the monitor unlock path (hence its name) but detects and recovers from the race and thus maintains correct mutual exclusion. We also introduce speculative deflation, a mechanism for releasing a monitor when it is no longer needed.