Concurrency abstractions in a C++ class library

C++ is increasingly becoming the language of choice among software developers. It is therefore not surprising to see the many attempts that have been made to add concurrency to C++. Concurrency can be added to C++ either by extending the language or through the use of a class library.There is much debate among language designers about the approach to take in the integration of two paradigms of concurrency and object-oriented programming (OOP). The library approach keeps the language small, allows the programmer to work with familiar compilers and tools, provides the option of sup - porting many concurrent models through a variety of libraries, and eases porting of code to other architectures (usually, a small amount of assembler code needs to be changed). Software developers typically have large investments in existing code and are reluctant to adopt a new language. A class library with sufficient flexibility that can provide most of the functionality of a new or extended language is often more palatable. On the other hand, new or extended languages can use the compiler to provide higher-level constructs, compile-time type checking, and enhanced performance.The Parallel Computing Project at the Centre for Advanced Studies has been researching the possibility of adding concurrency to C++ with the assistance of a class library. The library consists of two layers. The bottom layer provides a set of low level concurrency primitives. The top layer, ABC++, uses the bottom layer to provide implicit parallelism. To our knowledge, ABC++ is the only concurrent class library that provides almost all of the functionality of extended languages without requiring the users to deal with explicit concurrency control and without imposing severe limitations. This paper outlines the progress of the project, the low level concurrency primitives and describes how ABC++ differs from other existing concurrent class libraries for C++.

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

[2]  Grady Booch,et al.  The design of the C++ Booch Components , 1990, OOPSLA/ECOOP '90.

[3]  Satoshi Matsuoka,et al.  Analysis of inheritance anomaly in object-oriented concurrent programming languages , 1993 .

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

[5]  Bjarne Stroustrup,et al.  A set of c++ classes for co-routine style programming , 1987 .

[6]  Hayssam Saleh,et al.  A Concurrency Control Mechanism for C++ Objects , 1991, Object-Based Concurrent Computing.

[7]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[8]  Laxmikant V. Kalé,et al.  CHARM++: a portable concurrent object oriented system based on C++ , 1993, OOPSLA '93.

[9]  Lui Sha,et al.  Priority Inheritance Protocols: An Approach to Real-Time Synchronization , 1990, IEEE Trans. Computers.

[10]  Dennis G. Kafura,et al.  Inheritance in Actor Based Concurrent Object-Oriented Languages , 1989, Comput. J..

[11]  Peter A. Buhr,et al.  Adding Concurrency to a Programming Language , 1992, C++ Conference.

[12]  Dennis Kafura,et al.  ACT++: Building a Concurrent C++ with Actors , 1989 .

[13]  Anoop Gupta,et al.  COOL: a language for parallel programming , 1990 .

[14]  James J. Horning,et al.  Synchronization Primitives for a Multiprocessor: A Formal Speci cation , 1987 .

[15]  Won Kim,et al.  Object-Oriented Concepts, Databases, and Applications , 1989 .

[16]  Akinori Yonezawa,et al.  Inheritance and Synchronization in Concurrent OOP , 1987, ECOOP.

[17]  Chris Tomlinson,et al.  Concurrent Object-Oriented Programming Languages , 1989, Object-Oriented Concepts, Databases, and Applications.

[18]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[19]  Edsger W. Dijkstra,et al.  The structure of the “THE”-multiprogramming system , 1968, CACM.

[20]  Philippe Gautron Porting and Extending the C++ Task System with the Support of Lightweight Processes , 1991, C++ Conference.

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

[22]  Peter A. Buhr,et al.  μC++: Concurrency in the object‐oriented language C++ , 1992, Softw. Pract. Exp..

[23]  Svend Frølund,et al.  Inheritance of Synchronization Constraints in Concurrent Object-Oriented Programming Languages , 1992, ECOOP.