Many attempts have been made to add concurrency to C++, often by exten
sive compiler extensions, but much of the work has not exploited the p
ower of C++. This paper shows how the object-oriented facilities of C+ are powerful enough to encapsulate concurrency creation and control.
We have developed a concurrent C++-based prototype system (ABC++) and
describe how we can provide, with a standard compiler, almost all of
the functionality offered by a new or extended language. Active object
s, object distribution, selective method acceptance, and synchronous a
nd asynchronous object interaction are supported. Concurrency control
and synchronization are encapsulated at the active object level. The g
oal of ABC++ is to allow users to write concurrent programs without de
aling with explicit synchronization and mutual exclusion constructs, w
ith as few restrictions on the use of C++ as possible. ABC++ can be im
plemented on either a shared memory multiprocessor or a cluster of hom
ogeneous workstations. It is presently implemented on a network of RIS
C System/6000(R) processors and on the IBM Scalable POWERparallel(TM)
System 1 (SP1(TM)).