|
ABSTRACT
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++.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
E. Arjomandi , W. O'Farrell , I. Kalas , G. Koblents , F. Ch. Eigler , G. R. Gao, ABC++: concurrency by inheritance in C++, IBM Systems Journal, v.34 n.1, p.120-137, 1995
|
| |
2
|
AT&T C++ Language System Release 2.0: Product Reference Manual, 1989, Select Code 307--146.
|
| |
3
|
|
| |
4
|
A. D. Birrell, J. V. Guttag, J. Horning and R. Levin, Synchronization Primitives for a multiprocessor: a formal specification, Research Report 20, DEC System Research Center, 1987.
|
| |
5
|
A. D. Birrell, An Introduction to programming with threads, Research Report 35, DEC System Research Center, 1989.
|
 |
6
|
|
| |
7
|
|
| |
8
|
P.A. Buhr and G. Ditchfield, Adding Concurrency to a Programming Language, USENIX C++ Technical Conference, 1992.
|
| |
9
|
|
| |
10
|
|
| |
11
|
E. Cooper and R. Draves, C. Threads, TR CMU-CS-88-154, Carnegie Mellon University, 1988.
|
 |
12
|
|
| |
13
|
T. W. Doeppner Jr., and Alan J. Gebele, C++ on a parallel machine, Report CS-87-26, Department of Computer Science, Brown University, November 1987.
|
| |
14
|
|
| |
15
|
P. Gautron, Porting and Extending the C++ Task System with the Support of Lightweight Processes, USENIX C++ Conference Proceedings, 1991, 135--146.
|
| |
16
|
|
| |
17
|
D. Grunwald, A User's Guide to AWESIME: An Object-Oriented Parallel Programming and Simulation System, Technical Report CU-CS-552-91, Department of Computer Science, University of Colorado at Boulder.
|
| |
18
|
|
| |
19
|
|
 |
20
|
Laxmikant V. Kale , Sanjeev Krishnan, CHARM++: a portable concurrent object oriented system based on C++, Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications, p.91-108, September 26-October 01, 1993, Washington, D.C., United States
|
 |
21
|
|
| |
22
|
S. Matsuoka, K. Wakita, and A. Yonezawa, Synchronization Constraints with Inheritance: What Is Not Possible - So What Is?, TR 90-010, Department of Information Science, the University of Tokyo, 1990.
|
| |
23
|
S. Matsuoka and A. Yonezawa, Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages, to appear.
|
| |
24
|
IEEE, Threads Extension for Portable Operating Systems (Draft 6), P1003.4a/D6, February 1992.
|
| |
25
|
|
| |
26
|
H. Saleh and P. Gautron, A System Library for C++ Distributed Applications on Transputers, in Parallel Computing Action: Selections from Publications of the RXF/LITP Team, LITP 91-075, RXF, December 1991. Also in Applications of Transputers 91, IOS Press, August 1991.
|
| |
27
|
R. Seliger, Extending C++ to Support Remote Procedure Call, Concurrency, Exception Handling, and Garbage Collection, Proceedings of 1990 USENIX C++ Conference, 1990, 241--264.
|
| |
28
|
|
| |
29
|
|
| |
30
|
B. Stroustrup, A Set of C Classes for Coroutine Style Programming, Technical Report CSRT 90, AT&T, November 1980, revised (1) July 1982, (2) November 1984.
|
| |
31
|
|
 |
32
|
C. Tomlinson , V. Singh, Inheritance and synchronization with enabled-sets, Conference proceedings on Object-oriented programming systems, languages and applications, p.103-112, October 02-06, 1989, New Orleans, Louisiana, United States
|
 |
33
|
|
 |
34
|
|
|