μC++: Concurrency in the object‐oriented language C++

We present a design, including its motivation, for introducing concurrency into C++. The design work is based on a set of requirements and elementary execution properties that generate a corresponding set of programming language constructs needed to express concurrency. The new constructs continue to support object‐oriented facilities such as inheritance and code reuse. Features that allow flexibility in accepting and subsequently postponing servicing of requests are provided. Currently, a major portion of the design is implemented, supporting concurrent programs on shared‐memory uniprocessor and mulitprocessor computers.

[1]  Ragui Kamel,et al.  Experience with Rendezvous , 1988 .

[2]  Jonathan E. Shopiro Extending the C++ Task System for Real-Time Control , 1987, C++ Workshop.

[3]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[4]  Narain H. Gehani,et al.  Concurrent C++: Concurrent programming with class(es) , 1988, Softw. Pract. Exp..

[5]  Richard C. Holt,et al.  The Turing programming language , 1988, CACM.

[6]  Per Brinch Hansen,et al.  The programming language Concurrent Pascal , 1975, IEEE Transactions on Software Engineering.

[7]  Narain H. Gehani,et al.  The concurrent C programming language , 1989 .

[8]  Thomas A. Cargill Does C++ Really Need Multiple Inheritance? , 1990, C++ Conference.

[9]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[10]  Brian A. Wichmann,et al.  Rationale for the design of the Ada programming language , 1979, SIGP.

[11]  David A. Padua Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming , 1990, PPoPP 1990.

[12]  Michael D. Tiemann Solving the RPC problem in GNU C , 1993 .

[13]  Gregory R. Andrews,et al.  An overview of the SR language and implementation , 1988, TOPL.

[14]  Robert Hieb,et al.  Continuations and concurrency , 1990, PPOPP '90.

[15]  Louis Lamarche,et al.  Interactors: a real-time executive with multiparty interactions in C++ , 1990, SIGP.

[16]  W. Morven Gentleman,et al.  Message passing between sequential processes: The reply primitive and the administrator concept , 1981, Softw. Pract. Exp..

[17]  Brian N. Bershad,et al.  PRESTO: A system for object‐oriented parallel programming , 1988, Softw. Pract. Exp..

[18]  R. F. Kamel,et al.  Experience with Rendezvous (tasking and communication model) , 1988, Proceedings. 1988 International Conference on Computer Languages.

[19]  F. Halsall,et al.  Design and implementation of a C-based language for distributed real-time systems , 1987, SIGP.

[20]  Chris D. Marlin Coroutines: A Programming Methodology, a Language Design and an Implementation , 1980, Lecture Notes in Computer Science.

[21]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPSLA 1986.

[22]  Daniel M. Yellin,et al.  Hermes - a language for distributed computing , 1991, Prentice Hall series in innovative technology.

[23]  Thomas Christaller,et al.  Multiple vs. single inheritance in object-oriented programming languages , 1990, Microprocessing and Microprogramming.

[24]  Peter A. Buhr,et al.  The μsystem: Providing light‐weight concurrency on shared‐memory multiprocessor computers running UNIX , 1990, Softw. Pract. Exp..

[25]  Nicholas Carriero,et al.  Linda in context , 1989, CACM.

[26]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[27]  A. J. Gebele,et al.  C++ on a Parallel Machine , 1987, C++ Workshop.

[28]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[29]  Bent Bruun Kristensen,et al.  The BETA Programming Language , 1987, Research Directions in Object-Oriented Programming.