Book contents
- Frontmatter
- Contents
- Preface
- 1 Introduction to Concurrency
- 2 Processes and the Specification of Concurrency
- 3 Communication between Processes
- 4 High-Level Concurrency Constructs - Shared Data
- 5 High-Level Concurrency Constructs - Message Passing
- 6 Languages for Concurrency
- 7 Implementation of a Concurrency Kernel
- Bibliography
- Index
6 - Languages for Concurrency
Published online by Cambridge University Press: 05 June 2012
- Frontmatter
- Contents
- Preface
- 1 Introduction to Concurrency
- 2 Processes and the Specification of Concurrency
- 3 Communication between Processes
- 4 High-Level Concurrency Constructs - Shared Data
- 5 High-Level Concurrency Constructs - Message Passing
- 6 Languages for Concurrency
- 7 Implementation of a Concurrency Kernel
- Bibliography
- Index
Summary
Before embarking upon a discussion of the concurrency facilities provided by various programming languages, it is necessary to issue an apology and a warning. The set of languages discussed in this chapter is intended to be a representative selection of languages available at the present time, which between them illustrate a number of different approaches to concurrency. It is hoped that no reader will feel offended at not finding his favourite concurrent language in the discussion. Examples are chosen to demonstrate a variety of treatments of controlled access to shared data, usually in the form of a shared data structure with limited access to the operations on the data structure (i.e. variations on the ‘monitor’ theme), and also languages supporting some form of message passing or mailbox handling are considered.
It should be clear that beneath each of the mechanisms to be found in any of the languages discussed in this chapter, some lower level code (or hardware) must be supplied to provide, if not the reality, then the illusion of concurrency. Beneath any successful concurrent language there is a system which manages the concurrency, schedules processes onto processors, provides the fundamental operations to implement process creation and deletion, and to provide communication facilities.
When any new language is designed, the designer attempts to correct many of the inadequacies (as he sees them) of one or more existing languages.
- Type
- Chapter
- Information
- Concurrent Programming , pp. 139 - 198Publisher: Cambridge University PressPrint publication year: 1992