skip to main content
article
Free Access

Implicit-signal monitors

Published:01 November 2005Publication History
Skip Abstract Section

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++.

References

  1. Andrews, G. R. 2000. Foundations of Multithreaded, Parallel and Distributed Programming. Addison--Wesley, Reading, MA.]]Google ScholarGoogle Scholar
  2. Ben-Ari, M. 1982. Principles of Concurrent Programming. Prentice-Hall International, Englewood Cliffs, NJ.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Bernstein, A. J. and Lewis, P. M. 1993. Concurrency in Programming and Database Systems. Jones and Bartlett, Subury, MA.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Brinch Hansen, P. 1972a. A comparison of two synchronizing concepts. Acta Inf. 1, 190--199.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Brinch Hansen, P. 1972b. Structured multiprogramming. Commun. ACM 15, 7 (July), 574--578.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Brinch Hansen, P. 1973a. Concurrent programming concepts. Softw.---Pract. Exp. 5, 4 (Dec.), 223--245.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Brinch Hansen, P. 1973b. Operating System Principles. Prentice-Hall, Englewood Cliffs, NJ.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Brinch Hansen, P. 1975. The Programming Language Concurrent Pascal. IEEE Trans. Softw. Eng. 2, 199--206.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Brinch Hansen, P. 1981. The design of Edison. Softw.---Pract. Exp. 11, 4 (Apr.), 363--396.]]Google ScholarGoogle Scholar
  10. 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 ScholarGoogle Scholar
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. Buhr, P. A., Fortier, M., and Coffin, M. H. 1995. Monitor classification. ACM Comput. Surv. 27, 1 (Mar.), 63--107.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Butenhof, D. R. 1997. Programming with POSIX Threads. Professional Computing. Addison-Wesley, Reading, MA.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle Scholar
  16. Cheriton, D. R. 1982. The Thoth System: Multi-Process Structuring and Portability. American Elsevier, New York, NY.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Cheriton, D. R. 1988. The V distributed system. Commun. ACM 31, 3 (Mar.), 314--333.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Courtois, P. J., Heymans, F., and Parnas, D. L. 1971. Concurrent control with readers and writers. Commun. ACM 14, 10 (Oct.), 667--668.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Dijkstra, E. W. 1968. The structure of the “THE”--multiprogramming system. Commun. ACM 11, 5 (May), 341--346.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle Scholar
  21. Francez, N. and Forman, I. R. 1996. Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming. ACM Press Books. Addison-Wesley, Reading, MA.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Gentleman, W. M. 1985. Using the harmony operating system. Tech. rep. 24685. National Research Council of Canada, Ottawa, Ont., Canada.]]Google ScholarGoogle Scholar
  23. Gosling, J., Joy, B., Steele, G., and Bracha, G. 2000. The Java Language Specification, 2nd ed. Addison-Wesley, Reading, MA.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Hasselbring, W. 2000. Programming languages and systems for prototyping concurrent applications. ACM Comput. Surv. 32, 1 (Mar.), 43--79.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle Scholar
  26. Hoare, C. A. R. 1974. Monitors: An operating system structuring concept. Commun. ACM 17, 10 (Oct.), 549--557.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Holt, R. C. 1992. Turing Reference Manual, 3rd ed. Holt Software Associates Inc, Toronto, Ont., Canada.]]Google ScholarGoogle Scholar
  28. Holt, R. C. and Cordy, J. R. 1988. The turing programming language. Commun. ACM 31, 12 (Dec.), 1410--1423.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. Intermetrics, Inc. 1995. Ada Reference Manual. International Standard ISO/IEC 8652:1995(E) with COR.1:2000 ed. Intermetrics, Inc., Cambridge, MA.]]Google ScholarGoogle Scholar
  31. Kessels, J. L. W. 1977. An alternative to event queues for synchronization in monitors. Commun. ACM 20, 7 (July), 500--503.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Lampson, B. W. and Redell, D. D. 1980. Experience with processes and monitors in mesa. Commun. ACM 23, 2 (Feb.), 105--117.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Lea, D. 2000. Concurrent Programming in Java: Design Principles and Patterns, 2nd ed. Addison-Wesley, Reading, MA.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle Scholar
  35. Nelson, G., Ed. 1991. Systems Programming with Modula-3. Prentice Hall Series in Innovative Technology. Prentice-Hall, Inc., Englewood Cliffs, CA.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  37. Stroustrup, B. 1994. The Design and Evolution of C++. Addison-Wesley, Reading, MA.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Wirth, N. 1988. Programming in Modula-2, 4th ed. Texts and Monographs in Computer Science. Springer-Verlag, Berlin, Germany.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Implicit-signal monitors

                  Recommendations

                  Comments

                  Login options

                  Check if you have access through your login credentials or your institution to get full access on this article.

                  Sign in

                  Full Access

                  PDF Format

                  View or Download as a PDF file.

                  PDF

                  eReader

                  View online with eReader.

                  eReader
                  About Cookies On This Site

                  We use cookies to ensure that we give you the best experience on our website.

                  Learn more

                  Got it!