Abstract
Concurrent programs that embed specifications of synchronizations in the body of their component are difficult to extend and modify. Small changes in a concurrent program, particularly changes in the interactions among components, may require re-implementation of a large number of components. Even specifications of components cannot be reused easily. This paper presents a concurrent program composition mechanism in which both specification and implementation of computations and interactions are completely separated. Separation of specifications and implementations facilitates extensions and modifications of programs by allowing one to separately change the implementations of computations and interactions. It also supports their reusability. The paper also describes the design and implementation of a concurrent object-oriented programming language based on this model, including a compiler for the language, and reports on the execution behavior of programs written in the language.
Similar content being viewed by others
REFERENCES
Gregory R. Andrews, Concurrent Programming, The Benjamin/Cummings Publishing Company, Redwood City, California (1991).
Raju Pandey and James C. Browne, A Compositional Approach to Concurrent Object-Oriented Programming, IEEE Int'l. Conf. Computer Lang., IEEE Press (May 1994).
Chris Tomlinson and Mark Scheevek, Concurrent Object Oriented Programming Languages, In Kim and F. H. Lochovsky (eds.), Object Oriented Concepts, Databases, and Applications, ACM Press, pp. 79–124 (1989).
Denis Caromel, Toward a Method of Object-Oriented Concurrent Programming, Comm. ACM, 36(9):90–102 (September 1993).
K. Mani Chandy and Carl Kesselman, Compositional C++: Compositional Parallel Programming, Technical Report Caltech-CS-TR-92–13, Cal Tech (1992).
C. A. R. Hoare, Communicating Sequential Processes, CACM, 21(8):666–677 (1978).
Dennis Kafura and Keung Lee, Inheritance in Actor Based Concurrent Object-Oriented Languages, Proc. ECOOP'89, Cambridge University Press, pp. 131–145 (1989).
S. Crespi Reghizzi and G. Galli de Paratesi, Definition of Reusable Concurrent Software Components, ECOOP '91, Springer-Verlag, pp. 148–165 (1991).
Laurent Thomas, Extensibility and Reuse of Object-Oriented Synchronization Components, Parallel Architecture and Languages Europe, LNCS 605, Springer Verlag, pp. 261–275 (1992).
Chris Tomlinson and Vineet Singh, Inheritance and Synchronization with Enabled Sets, OOPSLA '89 Conf. Object-Oriented Programming, ACM Press, pp. 103–112 (1989).
Bjarne Stroustrup, The C++ Programming Language, Addison Wesley, 2nd ed. (1991).
I. Foster, C. Kesselman, and S. Tuecke, The Nexus Approach to Integrating Multithreading and Communication, J. Parallel and Distributed Computation (1996).
Raju Pandey, A Compositional Approach to Concurrent Programming, Ph.D. thesis, University of Texas at Austin, August (1995).
J. Barnes and P. Hut, A Hierarchical O(N log N) Force Calculation Algorithm, Nature, p. 324 (1986).
William Gropp, Ewing Lusk, and Anthony Skjellum, Using MPI: Portable Parallel Programming with the Message-Passing Interface, The MIT Press, Cambridge, Massachusetts (1994).
G. R. Andrews and F. B. Schneider, Concepts and Notations for Concurrent Programming, ACM Computing Surveys, 15(1):3–43 (1983).
H. E. Bal, J. G. Steiner, and A. S. Tanenbaum, Programming Languages for Distributed Computing Systems, ACM Computing Surveys, 21(3):259–321 (1989).
D. B. Skillicorn and D. Talia, Models and Languages for Parallel Computation, ACM Computing Survey, 30(2):123–169 (June 1998).
N. Medvidovic, A Classification and Comparison Framework for Software Architecture Description Languages, Technical Report UCI-ICS-97–02, University of California, Irvine, California (1997).
M. Shaw and D. Garlan, Software Architecture: Perspectives on An Emerging Discipline, Prentice Hall (1996).
J. Bishop and R. Faria, Languages for Configuration Programming: A Comparison, Technical Report UP CS 94–04, University of Pretoria, South Africa (1994).
R. Allen and D. Garlan, Beyond Definition-Use: Architectural Interconnection, Int'l. Workshop on Interface Definition Languages, SIGPLAN, 29:35–45 (1994).
M. Shaw, R. DeLine, D. V. Klein, T. L. Ross, D. M. Young, and G. Zelesnik, Abstractions for Software Architecture and Tools to Support Them, IEEE Trans. Software Engng., 21(4):314–335 (April 1995).
J. Magee, N. Dulay, and J. Kramer, Structuring Parallel and Distributed Programs, Software Engng. J., 8(2):73–82 (1993).
J. Magee, N. Dulay, and J. Kramer, Regis: A Constructive Development Environment for Distributed Programs, Distributed Syst. Engng. J., 1(5):304–312 (1994).
J. Purtilo, The Polylith Software Bus, ACM Trans. Progr. Lang. Syst., 16(1):151–174 (1994).
C. V. Lopes and G. Kiczales, D: A Language Framework for Distributed Programming, Technical Report SPL97–010, Xerox Palo Alto Research Center (February 1997).
Satoshi Matsuoka, Keniro Taura, and Akinori Yonezawa, Highly Efficient and Encapsulated Re-use of Synchronization Code in Concurrent Object-Oriented Languages, OOPSLA'93, ACM SIGPLAN, ACM Press, pp. 109–126 (1993).
Svend Frolund and Gul Agha, A Language Framework for Multi-Object Coordination, Proc. ECOOP'93, pp. 346–360 (1993).
Ian T. Foster, Information Hiding in Parallel Programs, Technical Report MCS-P290–0292, Argonne National Laboratory (1992).
Peter A. Buhr and Richard A. Strossbosscher, μC++ Annotated Reference Manual, Technical Report Version 3.7, University of Waterloo, Waterloo, Ontario, Canada, N2L 3G1 (June 1993).
R. Chandra, A. Gupta, and J. L. Hennessy, COOL: A Language for Parallel Programming, Languages and Compilers for Parallel Computing Conference, Springer Verlag, pp. 126–147 (1992).
Andrew S. Grimshaw, Easy-to-Use Object-Oriented Parallel Processing with Mentat, IEEE Computer, 26(6):39–51 (1993).
D. Dechouchant, S. Krakowiak, M. Meyesmbourg, M. Riveill, and X. Rousset de Pina, A Synchronization Mechanism for Typed Objects in a Distributed Systems, Workshop on Object-Based Concurrent Progr., ACM SIGPLAN, ACM, pp. 105–107 (September 1989).
Narain H. Gehani, Capsules: A Shared Memory Access Mechanism for Concurrent C/C++, IEEE Trans. Parallel and Distributed Systems, 4(7):795–810 (July 1993).
J. E. Grass and R. H. Campbell, Mediators: A Synchronization Mechanism, Sixth Int'l. Conf. Distributed Computing Systems, pp. 468–477 (1986).
Ciaran McHale, Bridget Walsh, Sea-n Baker, and Alexis Donnelly, Scheduling Predicates, Object-Based Concurrent Computing Workshop, ECOOP'91, LNCS 612, Springer Verlag, pp. 177–193 (1991).
Christian Neusius, Synchronizing Actions, ECOOP '91, Springer Verlag, pp. 118–132 (1991).
Svend Frolund, Inheritance of Synchronization Constraints in Concurrent Object-Oriented Programming Languages, ECOOP '92, LNCS 615, Springer Verlag, pp. 185–196 (1992).
Satoshi Matsuoka, Language Features for Re-use and Extensibility in Concurrent Object-Oriented Programming, Ph.D. thesis, The University of Tokyo, Japan (June 1993).
R. H. Campbell and A. N. Habermann, The Specification of Process Synchronization by Path Expressions, Lecture Notes on Computer Sciences, Springer Verlag, Vol. 16, pp: 89–102 (1974).
Toby Bloom, Evaluating Synchronization Schemes, Proc. Seventh Symp. Oper. Syst. Principles, ACM, pp. 24–32 (1979).
R. Pandey and James C. Browne, Support for Extensibility and Reusability in Concurrent Object-Oriented Programming Languages, Proc. Int'l. Parallel Processing Symp., IEEE, pp. 241–248 (1996).
Satoshi Matsuoka and Akinori Yonezawa, Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages, Research Directions in Object-Based Concurrency, MIT Press, Cambridge (1993).
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Pandey, R., Browne, J.C. Support for Implementation of Evolutionary Concurrent Systems. International Journal of Parallel Programming 29, 401–431 (2001). https://doi.org/10.1023/A:1011173302980
Issue Date:
DOI: https://doi.org/10.1023/A:1011173302980