Concurrency abstractions in a C++ class library

  • Authors:
  • Eshrat Arjomandi;Ivan Kalas;William O'Farrell

  • Affiliations:
  • York University;IBM Canada;IBM Canada

  • Venue:
  • CASCON '93 Proceedings of the 1993 conference of the Centre for Advanced Studies on Collaborative research: distributed computing - Volume 2
  • Year:
  • 1993

Quantified Score

Hi-index 0.00

Visualization

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++.