Objectives
This section discusses the language support
needed for extending the object model
with concurrency and distribution.
Three ways to add concurrency to a language
supporting objects are discussed.
Following [Wegner87],
we also reflect on the encapsulation
capabilities of processes.
The notion of active objects
is introduced as a solution to
unifying object and process capabilities.
Points to emphasize
- language support --
processes, communication, fault-tolerance
- concurrency --
processes, active objects, asynchrony
- active objects --
sequential processes
slide: Points to emphasize
Hints
The discussion of processes and threads
is based on [Wegner87].
You may need to discuss the notion of threads somewhat
more extensively if students are not
familiar with issues of concurrency.
It is important to explain why
concurrent extensions of object-oriented
languages may be considered useful!
Students may ask you: ``Why not use the Unix
fork statement?''.
Yes, why not?
Questions
- What ways can you think of to extend
object-based languages with concurrency
features?
- How would you characterize the notion of active objects?
slide: Questions
Comments
I have taken the liberty of including some examples of Active C++,
a research language developed in my group.
You may translate these examples to, for example,
Ada or POOL-T, if you wish.