[an error occurred while processing this directive]
Like humans, computers can team up with their peers to achieve results that none of them could obtain alone; unlike humans, they can do many things at once (or with the appearance of simultaneity), and do all of them well. So far, however, the discussion has implicitly assumed that the computation is sequential --- proceeds along a single thread of control. We should now see what happens when this assumption no longer holds, as we move to concurrent (also known as parallel) computation.
Concurrency is not a new subject, but for a long time interest in it remained mostly confined to three application areas: operating systems, networking systems and high-speed scientific software. Although strategic and prestigious, these tasks involve only a small subset of the software development community.
Things have changed. Concurrency is quickly becoming a required component of just about every type of application, including some which had traditionally been thought of as fundamentally sequential in nature. Beyond mere concurrency, our systems, whether or not client-server, must increasingly become distributed over networks, including the network of networks --- the Internet. This evolution gives particular urgency to the central question of this chapter: can we apply object-oriented ideas in a concurrent and distributed context?
Not only is this possible: object technology can help us develop concurrent and distributed applications simply and elegantly.
Table of Contents Next section