Programming model

The different programming models can be classified in 3 groups:

  1. Explicit concurrent task. This is the most basic approach. The programmer explicitely creates and manipulates tasks. Depending on the extension the tasks can be heavy weight Unix processes or light weight processes (threads).
  2. Data oriented model. This model can be seen as an Object-Oriented extension of the data parallel paradigm. Depending on the extensions, the parallelism will either be explicit or implicit. The explicit approach is generally based on geometric decomposition of data and introduction of new data type (e.g. aggregate class).
  3. Active Objects. This model is a direct extension of the Object-Oriented paradigm, the program is organised as a collection of concurrently running active objects.
    The model can be further more break down into subgroups:
  Explicit Concurrent Tasks Data oriented model Active Objects
Arjuna . . Active & Passive Objects
Single-threaded Objects
Avalon/C++ . . Active & Passive Objects
Single-threaded Objects
C** . X .
CC++ X . .
Charm++ . . Active & Passive Objects
Single-threaded Objects
Composites . X .
Concurrent C++ . . Active & Passive Objects
Single-threaded Objects
DC++ X . .
Dome . X .
DoPVM X . .
DPC++ . X .
KAROS . . Active & Passive Objects
Single-threaded Objects
LITP-C++ . . Only Active Objects
Multi-threaded Objects
Mentat . X .
Mercury X . .
Open C++ . . Active & Passive Objects
Single-threaded Objects
Panda . . Active & Passive Objects
Multi-threaded Objects
pC++ X X .
Presto X . .
QPC++ . X Active & Passive Objects
Single-threaded Objects
UC++ . . Active & Passive Objects
Single-threaded Objects
µC++ . . Active & Passive Objects
Single-threaded Objects

Back to Overview homepage


This page is maintained by Nathalie Furmento, Yves Roudier, and Günther Siegel. For all remarks or suggestions, please send us a mail.
Last updated: Wed, Aug 28 1996