Rationale
This chapter gives an introduction to
the problems involved in extending
the object paradigm with distribution and
concurrency.
From a modeling perspective, concurrency presents
itself as a natural extension of object-oriented modeling.
However, to realize distribution and concurrency,
the discrepancy between objects and processes
must somehow be resolved.
A number of concurrent extensions of C++
are described.
Also, we discuss the problems that arise when employing inheritance
in the presence of processes.
Finally, we discuss the requirements
for actual distribution.
Hints
The treatment is biased towards the notion of
active objects.
Active objects combine the encapsulation
capabilities of objects with the
threads capability of processes.
Each of the sections shed light on the notion
of active objects from a different
perspective.
For background reading on concurrency and
distribution, consult [Ba89] or [Andrews].
Research papers concerning concurrent object-oriented
programming are collected in
[YT87] and [AWY93].
Project assignments
As subjects for a paper you may think
of
- a comparative study of concurrent extensions
to C++ or Eiffel
See, for example, [Meyer93].
Another interesting subject for a paper might be
- problems and solutions for the inheritance anomaly
See [Mats93] for an introduction.
As practical work, I suggest
- object-oriented solutions for concurrency problems
such as the problems discussed in
[Andrews].
Comments
For the latter assignment, you need
to obtain one of the packages mentioned
in this chapter.
See appendix G for a list of ftp sites.
In my experience, the installation
of these packages usually requires some effort.