Objectives
This section presents a number of
concurrent extensions of C++.
The extensions presented form a more or less
representative selection from
the numerous extensions proposed in the
literature.
Each extension highlights a particular
approach to extending C++ with concurrency,
ranging from the addition of processes
to a data flow approach.
Points to emphasize
- design issues --
active/passive objects
- {\em Concurrent C++ } --
an orthogonal approach
- {\em ACT++} -- the actor model
- {\em {}C++} -- write once variables
- {\em Mentat/C++} -- data flow
Hints
The way in which classes are used in ACT++ to dynamically determine
the behavior of an actor object
is worth explaining.
Actually, this solution involves higher order
aspects that the designers of ACT++ have not fully worked out.
Another solution, involving explicit behavior
descriptions, is given in the next section.
Questions
- What do you consider the major design issues
in extending C++ with concurrency?
- Discuss how Concurrent C++ extends
C++ with concurrency?
- What are the features of the actor model?
Describe how ACT++ realizes the actor model for C++.
- Characterize how {}C++ extends C++
with concurrency.
Do the same for Compositional C++
and Mentat/C++.
Comments
This section only gives a rather rough
outline of the approaches taken
to extend C++ with concurrency.
If possible, try to obtain one of
the systems described and let students work
out some simple problems.
Learning by doing is probably
more effective than learning by listening.