Transactional memory: architectural support for lock-free data structures
ISCA '93 Proceedings of the 20th annual international symposium on computer architecture
Priority ceiling protocol in Ada
Proceedings of the conference on TRI-Ada '96: disciplined software development with Ada
Scheduling multithreaded computations by work stealing
Journal of the ACM (JACM)
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Monitors and Concurrent Pascal: a personal history
History of programming languages---II
Threads cannot be implemented as a library
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Ada 2005 Reference Manual. Language and Standard Libraries: International Standard ISO/IEC 8652/1995(E) with Technical Corrigendum 1 and Amendment 1 (Lecture Notes in Computer Science)
Validity of the single processor approach to achieving large scale computing capabilities
AFIPS '67 (Spring) Proceedings of the April 18-20, 1967, spring joint computer conference
Transactional memory should be an implementation technique, not a programming interface
HotPar'09 Proceedings of the First USENIX conference on Hot topics in parallelism
Real-time programming on accelerator many-core processors
Proceedings of the 2013 ACM SIGAda annual conference on High integrity language technology
Hi-index | 0.00 |
Writing efficient programs for increasingly parallel computer architectures requires the use of hardware primitives, such as atomic read-modify-write instructions or transactional memory. While new libraries and language constructs are introduced to expose the new capabilities, we argue that they are implementation details best left hidden. High-level synchronization constructs, such as those provided by Java and Ada, are both sufficient and necessary for modern programming languages to take full advantage of today's and tomorrow's hardware. While defined in terms of mutual exclusion, we show that these constructs are general enough to allow an enhanced compiler to automatically generate the appropriate lock-free synchronization code for the target system. Language support for synchronization is necessary for efficient, reliable and portable programs.