Skip to main content

Building Safe Concurrency Abstractions

  • Chapter

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 8665))

Abstract

Concurrent object-oriented programming in Beta is based on semaphores and coroutines and the ability to define high-level concurrency abstractions like monitors, and rendezvous-based communication, and their associated schedulers. The coroutine mechanism of SIMULA has been generalized into the notions of concurrent and alternating objects. Alternating objects may be used to start a cooperative thread for each possible blocking communication and is thus an alternative to asynchronous messages and guarded commands. Beta like SIMULA, the first OO language, was designed as a language for modeling as well as programming, and we describe how this has had an impact on the design of the language. Although Beta supports the definition of high-level concurrency abstractions, the use of these rely on the discipline of the programmer as is the case for Java and other mainstream OO languages. We introduce the notion of subpattern (including subclass) restrictions as a mechanism for defining safe concurrency abstractions. Subpattern restrictions have been implemented in a new experimental version of Beta, called xBeta .

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Ada. Ada reference manual. proposed standard document (1980)

    Google Scholar 

  2. Agha, G.: Actors: a model of concurrent computation in distributed systems. MIT Press, Cambridge (1986)

    Google Scholar 

  3. Agha, G.: Concurrent object-oriented programming. Communications of the ACM 35(9), 125–141 (1990)

    Article  Google Scholar 

  4. Aldrich, J., Chambers, C.: Ownership Domains: Separating Aliasing Policy from Mechanism. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 1–25. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  5. Almeida, P.S.: Balloon Types: Controlling Sharing of State in Data Types. In: Akşit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 32–59. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  6. Armstrong, J., Virding, R., Williams, M.: Concurrent Programming in Erlang. Prentice Hall (1993)

    Google Scholar 

  7. Bernstein, A.J.: Output Guards and Nondeterminism in “Communicating Sequential Processes”. ACM Transactions on Programming Languages and Systems (TOPLAS) 2(2), 234–238 (1980)

    Article  MathSciNet  Google Scholar 

  8. Black, A., Hutchinson, N., Jul, E., Levy, H.: Object Structure in the Emerald System. In: OOPLSA 1986 – Object-Oriented Programming Systems, Languages and Applications, pp. 78–86. ACM SIGPLAN (1986)

    Google Scholar 

  9. Blake, E., Cook, S.: On Including Part Hierarchies in Object-Oriented Languages, with an Implementation in Smalltalk. In: Bézivin, J., Hullot, J.-M., Lieberman, H., Cointe, P. (eds.) ECOOP 1987. LNCS, vol. 276, pp. 41–50. Springer, Heidelberg (1987)

    Chapter  Google Scholar 

  10. Booch, G.: Object-Oriented Analysis and Design with Applications. Benjamin/Cummings, Redwood City (1991)

    MATH  Google Scholar 

  11. Brinch-Hansen, P.: The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls. Springer (2002)

    Google Scholar 

  12. Brinch-Hansen, P.: The Programming Language Concurrent Pascal. IEEE Transactions on Software Engineering SE-1(2) (1975)

    Google Scholar 

  13. Brinch-Hansen, P.: Java’s insecure parallelism. ACM SIGPLAN Notices 34(4), 38–45 (1999)

    Article  Google Scholar 

  14. Budd, T.: An Introduction to Object-Oriented Programming, 3rd edn. Addison Wesley (2002)

    Google Scholar 

  15. Coad, P., Yourdon, E.: Object-Oriented Analysis. Prentice-Hall, Englewood Cliffs (1991)

    Google Scholar 

  16. Conway, M.E.: Design of a Separable Transition-Diagram Compiler. Communications of the ACM 6(7), 396–408 (1963)

    Article  MATH  Google Scholar 

  17. Cook, S.: Object Technology – A Grand Narrative? In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 174–179. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  18. Cook, W.R.: Peak Objects. In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 180–185. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  19. Dahl, O.-J., Hoare, C.A.R.: Hierarchical Program Structures. Academic Press (1972)

    Google Scholar 

  20. Dahl, O.-J., Myhrhaug, B., Nygaard, K.: SIMULA 67 Common Base Language (Editions 1968, 1970, 1972, 1984). Technical report, Norwegian Computing Center (1968)

    Google Scholar 

  21. Dahl, O.-J., Nygaard, K.: SIMULA—a Language for Programming and Description of Discrete Event Systems. Technical report, Norwegian Computing Center (1965)

    Google Scholar 

  22. Dahl, O.-J., Nygaard, K.: SIMULA: an ALGOL-based Simulation Language. Communications of the ACM 9(9), 671–678 (1966)

    Article  MATH  Google Scholar 

  23. Dahl, O.-J., Nygaard, K.: The Development of the SIMULA Languages. In: ACM SIGPLAN History of Programming Languages Conference (1978)

    Google Scholar 

  24. Dahl, O.-J., Wang, A.: Coroutine Sequencing in a Block Structured Environment. BIT 11, 425–449 (1971)

    Article  MATH  Google Scholar 

  25. Dijkstra, E.W.: Guarded Commands, Nondeterminacy and the Formal Derivation of Programs. Communications of the ACM 18, 453–457 (1975)

    Article  MathSciNet  MATH  Google Scholar 

  26. Google. Dart – Build HTML5 Apps for the Modern Web. Technical report (2011), http://www.dartlang.org/

  27. Gosling, J., Joy, B., Steele, G.: The Java (TM) Language Specification. Addison-Wesley (1996)

    Google Scholar 

  28. Griswold, R.E., Hanson, D.R., Korb, J.T.: Generators in Icon. ACM Trans. on Programming Languages and Systems 3(2), 144–161 (1981)

    Article  MATH  Google Scholar 

  29. Hewitt, C., Bishop, P., Steiger, R.: A universal modular ACTOR formalism for artificial intelligence. In: IJCAI 1973 – 3rd International Joint Conference on Artificial Intelligence, pp. 235–245 (1973)

    Google Scholar 

  30. Hoare, C.A.R.: Notes on Data Structuring. Academic Press, London (1972)

    Google Scholar 

  31. Hoare, C.A.R.: Hints on Programming Language Design. Technical report, Computer Science Department, Stanford University (1973)

    Google Scholar 

  32. Hoare, C.A.R.: Communicating Sequential Processes. Communications of the ACM 21(8) (1978)

    Google Scholar 

  33. Hogg, J.: Islands: Alisasing Protectio in Object-Oriented Languages. In: OOPSLA 1996 – Object-Oriented Programming Systems, Languages and Applications (1991)

    Google Scholar 

  34. Kernighan, B.W., Ritchie, D.M.: The C Programming Language, 2nd edn. Prentice Hall, Englewood Cliffs (1978)

    MATH  Google Scholar 

  35. Kreutzer, W., Østerbye, K.: BetaSim - a framework for discrete event modeling & simulation. Simulation - Practice & Theory (1999)

    Google Scholar 

  36. Kristensen, B.B., Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Abstraction Mechanisms in the BETA Programming Language. In: Tenth ACM Symposium on Principles of Programming Languages (1983)

    Google Scholar 

  37. Kristensen, B.B., Møller-Pedersen, B., Chepoi, V.: Classification of Actions or Inheritance also for Methods. In: Bézivin, J., Hullot, J.-M., Lieberman, H., Cointe, P. (eds.) ECOOP 1987. LNCS, vol. 276, pp. 98–107. Springer, Heidelberg (1987)

    Chapter  Google Scholar 

  38. Kristensen, B.B., Madsen, O.L., Møller-Pedersen, B.: The When, Why and Why not of the BETA Programming Language. In: Hailpern, B., Ryder, B.G. (eds.) History of Progamming Languages III. SIGPLAN (2007)

    Google Scholar 

  39. Kristensen, B.B., Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Multi-sequential execution in the BETA programming language. ACM SIGPLAN Notices 20(4), 57–69 (1985)

    Article  Google Scholar 

  40. Krogdahl, S., Olsen, K.A.: Modular and Object-Oriented Programming. Data Tid 9 (1986)

    Google Scholar 

  41. Madsen, O.L., Møller-Pedersen, B.: What Object-Oriented Programming May Be—and What It Does Not Have to Be. In: Gjessing, S., Chepoi, V. (eds.) ECOOP 1988. LNCS, vol. 322, pp. 1–20. Springer, Heidelberg (1988)

    Chapter  Google Scholar 

  42. Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object-Oriented Programming in the BETA Programming Language. Addison Wesley (1993)

    Google Scholar 

  43. Madsen, O.L.: Defining Object Semantics using Object Sequence Diagrams – or just another high-level debugger. Technical report, Aarhus University (2012)

    Google Scholar 

  44. Madsen, O.L.: Modularization and Browsing – an Integrated Design. Technical Report, Dept. of Computer Science, Aarhus University, Aarhus (2012)

    Google Scholar 

  45. Madsen, O.L., Møller-Pedersen, B.: A Unified Approach to Modeling and Programming. In: Petriu, D.C., Rouquette, N., Haugen, Ø. (eds.) MODELS 2010, Part I. LNCS, vol. 6394, pp. 1–15. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  46. Magnusson, B.: Using the simioprocess library on Unix Systems. Technical report, Lund Software House AB, Sweden (1997)

    Google Scholar 

  47. Meyer, B.: Object-Oriented Software Construction. Prentice Hall (1997)

    Google Scholar 

  48. Naur, P.: Revised Report on The Algorithmic Language ALGOL 60. Communications of the ACM 6 (1963)

    Google Scholar 

  49. Nierstrass, O.: Ten Things I Hate About Object-Oriented Programming – Banquet speech given at ECOOP 2010. Maribor 2010. The JOT blog – Journal of Object Technology (June 24, 2010)

    Google Scholar 

  50. Noble, J., Vitek, J., Potter, J.: Flexible Alias Protection. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 158–185. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  51. Nordlander, J., Jones, M.P., Carlsson, M., Kieburtz, D., Black, A.P.: Reactive Objects. In: Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing, ISORC 2002 (2002)

    Google Scholar 

  52. Halstead Jr., R.H.: Multilisp: A language for concurrent symbolic computation. ACM Transactions on Programming Languages and Systems 7(4), 501–538 (1985)

    Article  MATH  Google Scholar 

  53. Stroustrup, B.: The C++ Programming Language. Addison-Wesley, Reading (1986)

    MATH  Google Scholar 

  54. Stroustrup, B.: Evolving a language in and for the real world: C++ 1991-2006. In: History of Programming Languages III. ACM (2007)

    Google Scholar 

  55. Vaucher, J.: Prefixed Procedures: A Structuring Concept for Operations. IN-FOR 13(3) (1975)

    Google Scholar 

  56. Vaucher, J., Magnusson, B.: SIMULA Frameworks: the Early Years. Wiley (1999)

    Google Scholar 

  57. Wirth, N.: Programming in Modula-2. Springer, New York (1982)

    Book  MATH  Google Scholar 

  58. Wirth, N.: Modula-2 and Oberon. In: Hailpern, B., Ryder, B.G. (eds.) History of Progamming Languages III. SIGPLAN (2007)

    Google Scholar 

  59. Yokote, Y., Tokoro, M.: Experience and Evolution of Concurrent Smalltalk. In: OOPSLA 1987– Object-Oriented Programming Systems, Languages and Applications, pp. 406–415. ACM SIGPLAN (1987)

    Google Scholar 

  60. Yonezawa, A.: Early Concurrent/Mobile Objects. In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 198–202. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  61. Yonezawa, A., Briot, J.-P., Shibayama, E.: Object-Oriented Concurrent Programming in ABCL/1. In: OOPLSA 1986 – Object-Oriented Programming Systems, Languages and Applications, pp. 258–268. ACM SIGPLAN (1986)

    Google Scholar 

  62. Østerbye, K., Kreutzer, W.: Synchronization Abstraction in the BETA Programming Language. Computer Languages 25, 165–187 (1999)

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Madsen, O.L. (2014). Building Safe Concurrency Abstractions. In: Agha, G., et al. Concurrent Objects and Beyond. Lecture Notes in Computer Science, vol 8665. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-44471-9_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-662-44471-9_4

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-662-44470-2

  • Online ISBN: 978-3-662-44471-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics