Communications of the ACM
The Turing programming language
Communications of the ACM
Programming in Modula-2 (4th ed)
Programming in Modula-2 (4th ed)
Emerald: a general-purpose programming language
Software—Practice & Experience
Systems programming with Modula-3
Systems programming with Modula-3
Concurrency in programming and database systems
Concurrency in programming and database systems
&mgr;C++: concurrency in the object-oriented language C++
Software—Practice & Experience
The design and evolution of C++
The design and evolution of C++
ACM Computing Surveys (CSUR)
Interacting processes: a multiparty approach to coordinated distributed programming
Interacting processes: a multiparty approach to coordinated distributed programming
Programming with POSIX threads
Programming with POSIX threads
Programming languages and systems for prototyping concurrent applications
ACM Computing Surveys (CSUR)
Concurrent Programming Concepts
ACM Computing Surveys (CSUR)
Experience with processes and monitors in Mesa
Communications of the ACM
An alternative to event queues for synchronization in monitors
Communications of the ACM
Monitors: an operating system structuring concept
Communications of the ACM
Communications of the ACM
Concurrent control with “readers” and “writers”
Communications of the ACM
The structure of the “THE”-multiprogramming system
Communications of the ACM
The Thoth System
Operating system principles
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
Principles of Concurrent Programming
Principles of Concurrent Programming
ICSE '76 Proceedings of the 2nd international conference on Software engineering
On synchronization with direct delaying and resuming
SE'07 Proceedings of the 25th conference on IASTED International Multi-Conference: Software Engineering
AutoSynch: an automatic-signal monitor based on predicate tagging
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
A survey of support for structured communication in concurrency control models
Journal of Parallel and Distributed Computing
Hi-index | 0.01 |
An implicit (automatic) signal monitor uses a waituntil predicate statement to construct synchronization, as opposed to an explicit-signal monitor using condition variables and signal/wait statements for synchronization. Of the two synchronization approaches, the implicit-signal monitor is often easier to use and prove correct, but has an inherently high execution cost. Hence, its primary use is for prototyping concurrent systems using monitors, where speed and accuracy of software development override execution performance. After a concurrent system is working, any implicit-signal monitor that is a performance bottleneck can be converted to an explicit-signal monitor. Unfortunately, many monitor-based concurrency systems provide only explicit-signal monitors, precluding the design benefits of implicit-signal monitors.This article presents a historical look at the development of the implicit-signal monitor in relation to its counterpart the explicit-signal monitor. An analysis of the different kinds of implicit-signal monitors shows the effects certain design decisions have on the problems that can be solved and the performance of the solutions. Finally, an extensive discussion is presented on simulating an implicit-signal monitor via different explicit-signal monitors. These simulations are reasonably complex, depending on the kind of explicit-signal monitor available for the simulation and the desired semantics required for the implicit-signal monitor. Interestingly, the complexity of the simulations also illustrates certain deficiencies with explicit-signal monitors, which are discussed in detail. Performance comparisons are made among the different simulations with monitors from the concurrent systems PThreads, Java, and μC++.