Abstract
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++.
- Andrews, G. R. 2000. Foundations of Multithreaded, Parallel and Distributed Programming. Addison--Wesley, Reading, MA.]]Google Scholar
- Ben-Ari, M. 1982. Principles of Concurrent Programming. Prentice-Hall International, Englewood Cliffs, NJ.]] Google Scholar
Digital Library
- Bernstein, A. J. and Lewis, P. M. 1993. Concurrency in Programming and Database Systems. Jones and Bartlett, Subury, MA.]] Google Scholar
Digital Library
- Brinch Hansen, P. 1972a. A comparison of two synchronizing concepts. Acta Inf. 1, 190--199.]]Google Scholar
Digital Library
- Brinch Hansen, P. 1972b. Structured multiprogramming. Commun. ACM 15, 7 (July), 574--578.]] Google Scholar
Digital Library
- Brinch Hansen, P. 1973a. Concurrent programming concepts. Softw.---Pract. Exp. 5, 4 (Dec.), 223--245.]] Google Scholar
Digital Library
- Brinch Hansen, P. 1973b. Operating System Principles. Prentice-Hall, Englewood Cliffs, NJ.]] Google Scholar
Digital Library
- Brinch Hansen, P. 1975. The Programming Language Concurrent Pascal. IEEE Trans. Softw. Eng. 2, 199--206.]]Google Scholar
Digital Library
- Brinch Hansen, P. 1981. The design of Edison. Softw.---Pract. Exp. 11, 4 (Apr.), 363--396.]]Google Scholar
- Buhr, P. A. 2004. μC++ annotated reference manual, version 5.0. Tech. rep. Department of Computer Science, University of Waterloo, Waterloo, Ontario, Canada, N2L 3G1. Go online to ftp://plg.uwaterloo.ca/pub/uSystem/uC++.ps.gz.]]Google Scholar
- Buhr, P. A., Ditchfield, G., Stroobosscher, R. A., Younger, B. M., and Zarnke, C. R. 1992. μC++: Concurrency in the object-oriented language C++. Softw.---Pract. Exp. 22, 2 (Feb.), 137-- 172.]] Google Scholar
Digital Library
- Buhr, P. A., Fortier, M., and Coffin, M. H. 1995. Monitor classification. ACM Comput. Surv. 27, 1 (Mar.), 63--107.]] Google Scholar
Digital Library
- Butenhof, D. R. 1997. Programming with POSIX Threads. Professional Computing. Addison-Wesley, Reading, MA.]] Google Scholar
Digital Library
- Campbell, R. H. and Habermann, A. N. 1974. The Specification of Process Synchronization by Path Expressions. Lecture Notes in Computer Science, vol. 16. Springer-Verlag, Berlin, Germany.]] Google Scholar
Digital Library
- Cardelli, L., Donahue, J., Glassman, L., Jordan, M., Kalsow, B., and Nelson, G. 1988. Modula-3 report. Tech. rep. 31. Systems Research Center, Palo Alto, CA.]]Google Scholar
- Cheriton, D. R. 1982. The Thoth System: Multi-Process Structuring and Portability. American Elsevier, New York, NY.]] Google Scholar
Digital Library
- Cheriton, D. R. 1988. The V distributed system. Commun. ACM 31, 3 (Mar.), 314--333.]] Google Scholar
Digital Library
- Courtois, P. J., Heymans, F., and Parnas, D. L. 1971. Concurrent control with readers and writers. Commun. ACM 14, 10 (Oct.), 667--668.]] Google Scholar
Digital Library
- Dijkstra, E. W. 1968. The structure of the “THE”--multiprogramming system. Commun. ACM 11, 5 (May), 341--346.]] Google Scholar
Digital Library
- ECMA International Standardizing Information and Communication Systems. 2002. C# Language Specification, Standard ECMA-334, 2nd ed. ECMA International Standardizing Information and Communication Systems, Geneva, Switzerland.]]Google Scholar
- Francez, N. and Forman, I. R. 1996. Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming. ACM Press Books. Addison-Wesley, Reading, MA.]] Google Scholar
Digital Library
- Gentleman, W. M. 1985. Using the harmony operating system. Tech. rep. 24685. National Research Council of Canada, Ottawa, Ont., Canada.]]Google Scholar
- Gosling, J., Joy, B., Steele, G., and Bracha, G. 2000. The Java Language Specification, 2nd ed. Addison-Wesley, Reading, MA.]] Google Scholar
Digital Library
- Hasselbring, W. 2000. Programming languages and systems for prototyping concurrent applications. ACM Comput. Surv. 32, 1 (Mar.), 43--79.]] Google Scholar
Digital Library
- Hoare, C. A. R. 1972. Towards a theory of parallel programming. In Operating Systems Techniques, C. A. R. Hoare and R. H. Perott, Eds. Academic Press, New York, NY, 61--71.]]Google Scholar
- Hoare, C. A. R. 1974. Monitors: An operating system structuring concept. Commun. ACM 17, 10 (Oct.), 549--557.]] Google Scholar
Digital Library
- Holt, R. C. 1992. Turing Reference Manual, 3rd ed. Holt Software Associates Inc, Toronto, Ont., Canada.]]Google Scholar
- Holt, R. C. and Cordy, J. R. 1988. The turing programming language. Commun. ACM 31, 12 (Dec.), 1410--1423.]] Google Scholar
Digital Library
- Howard, J. H. 1976. Signaling in monitors. In Proceedings of the Second International on Conference Software Engineering. IEEE Computer Society Press, Los Alamitos, CA, 47--52.]] Google Scholar
Digital Library
- Intermetrics, Inc. 1995. Ada Reference Manual. International Standard ISO/IEC 8652:1995(E) with COR.1:2000 ed. Intermetrics, Inc., Cambridge, MA.]]Google Scholar
- Kessels, J. L. W. 1977. An alternative to event queues for synchronization in monitors. Commun. ACM 20, 7 (July), 500--503.]] Google Scholar
Digital Library
- Lampson, B. W. and Redell, D. D. 1980. Experience with processes and monitors in mesa. Commun. ACM 23, 2 (Feb.), 105--117.]] Google Scholar
Digital Library
- Lea, D. 2000. Concurrent Programming in Java: Design Principles and Patterns, 2nd ed. Addison-Wesley, Reading, MA.]] Google Scholar
Digital Library
- Mitchell, J. G., Maybury, W., and Sweet, R. 1979. Mesa language manual. Tech. rep. CSL-79-3. Xerox Palo Alto Research Center. Palo Alto, CA.]]Google Scholar
- Nelson, G., Ed. 1991. Systems Programming with Modula-3. Prentice Hall Series in Innovative Technology. Prentice-Hall, Inc., Englewood Cliffs, CA.]] Google Scholar
Digital Library
- Raj, R. K., Tempero, E., Levy, H. M., Black, A. P., Hutchinson, N. C., and Jul, E. 1991. Emerald: A general-purpose programming language. Softw.---Pract. Exp. 21, 1 (Jan.), 91--118.]] Google Scholar
Digital Library
- Stroustrup, B. 1994. The Design and Evolution of C++. Addison-Wesley, Reading, MA.]] Google Scholar
Digital Library
- Wirth, N. 1988. Programming in Modula-2, 4th ed. Texts and Monographs in Computer Science. Springer-Verlag, Berlin, Germany.]] Google Scholar
Digital Library
Index Terms
Implicit-signal monitors
Recommendations
AutoSynch: an automatic-signal monitor based on predicate tagging
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationMost programming languages use monitors with explicit signals for synchronization in shared-memory programs. Requiring programmers to signal threads explicitly results in many concurrency bugs due to missed notifications, or notifications on wrong ...
AutoSynch: an automatic-signal monitor based on predicate tagging
PLDI '13Most programming languages use monitors with explicit signals for synchronization in shared-memory programs. Requiring programmers to signal threads explicitly results in many concurrency bugs due to missed notifications, or notifications on wrong ...
Lightweight monitors for the Java virtual machine
Research ArticlesJava supports the monitor construct for language-level synchronization in the context of multi-threading. This paper introduces the lightweight monitor, an efficient user-level monitor implementation. The lightweight monitor is useful for single-...






Comments