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.

Further reading

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 See, for example,  [Meyer93]. Another interesting subject for a paper might be See  [Mats93] for an introduction. As practical work, I suggest 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.