Ada Home
December 14, 1997

Book Review

Concurrency in Ada

by Alan Burns and Andy Wellings

reviewed by Pat Rogers
progers@acm.org

Written by acknowledged experts in both real-time and concurrent programming, Concurrency in Ada is a comprehensive, well-ordered, highly readable examination of the Ada 95 tasking facilities. Every essential subject related to tasking is thoroughly examined, including the pertinent annexes, to a depth not feasible in texts covering the entire language. More than just a detailed tasking examination, however, the book offers many examples of usage and analysis of feature interaction that only these two authors could provide. Combined with the thoroughness of explanation, this analysis provides a resource that every serious Ada user should have.

The book lays the foundation for an appreciation of the Ada facilities with an introduction to concurrent programming, in which the difficulties of synchronization and communication inherent in multiprocessing systems are illustrated. The Ada process (i.e. task) model is then examined in detail, followed by the data-oriented synchronization facility of protected types. Note that some familiarity with the sequential portion of Ada 95 is assumed, although a brief overview of the language is provided in the first chapter.

Previous papers by these and other authors have pointed out a relative lack of expressive power of parts of the Ada 83 tasking interaction model. Termed avoidance synchronization, this relative lack has been addressed by the new requeue mechanism, and the authors provide both the rationale and detailed explanation necessary for proper usage.

As an example of the value of the book, a chapter is dedicated to using protected types to build a number of abstractions defined by the ARTEWG CIFO (Ada Run Time Environment Working Group's Catalog of Interface Features & Options). Complete source code is provided to create semaphores, signals, buffers, events, and blackboards, among other examples illustrating the power of the new facilities.

The new, somewhat controversial asynchronous task interaction mechanism is then reviewed, including both illustrations of use and subtleties to watch out for. This chapter is a prime example of the analysis of language facility interactions provided by the book. Task abort and exceptions are also considered in the context of asynchronous interactions.

Another prime analysis example is that of the interaction of the concurrent programming and object-oriented programming facilities. No other Ada textbook has provided this degree of illumination of the possibilities and limitations encountered when combining the two capabilities.

Finally, all three pertinent annexes are examined. The new interrupt handling model is covered in the Systems Programming Annex review, as well as task identifiers and per-task data. In combination with the facilities provided by the Real-Time Systems Annex, these new features are put to use in the creation of user-defined schedulers. Of course, predefined schedulability analysis support is covered, as is the capability for bot synchronous and asynchronous task control. Following an overview of the distribution model provided by the Distributed Systems Annex, a number of distributed programming paradigms are presented using the model provided.

The book closes with a review of the language changes brought to Ada and discusses how and why they were or were not complete. Flaws are not discounted and those areas affected by constraints placed upon the language revision team are not ignored.

In summary, the breadth and depth of examination, coupled with the unique analysis of feature interaction make this an essential textbook for those contemplating use of Ada tasking. Put another way, this reviewer has approximately thirty textbooks on the Ada language. I wouldn't do without this one.

About the authors:
Alan Burns and Andy Wellings work at the University of York, UK.

About the reviewer:
Pat Rogers is a consultant specializing in hard real-time systems development, with experience in Ada dating back to 1980. His aperiodic activities include working on a Ph.D. in software fault tolerance for real-time systems, as well as teaching industry courses on all aspects of Ada.

About the book:
Published by Cambridge University Press
Hardcover: June 1995, ISBN 0521414717 (out of stock)
Paperback: November 1997, ISBN 052162911X
Table of Contents
-----------------
Foreword
Preface

 1. The Ada Language
 2. The Nature and Uses of Concurrent Programming
 3. Inter-Process Communication
 4. Ada Task Types and Objects
 5. The Rendezvous
 6. The Select Statement and the Rendezvous
 7. Protected Objects and Data-Oriented Communication
 8. Avoidance Synchronisation and the Requeue Facility
 9. Using Protected Objects as Building Blocks
10. Exceptions, Abort and Asynchronous Transfer of Control
11. Tasking and Systems Programming
12. Real-Time Programming
13. Object-Oriented Programming and Tasking
14. Distributed Systems
15. Conclusion

Index

This book and other Ada books can be ordered on-line from the Ada Home Bookshop, in the General Ada section.

Resources


What did you think of this review?

Very interesting
Interesting
Not interesting
Too long
Just right
Too short
Too detailed
Just right
Not detailed enough
Comments:

The text of this review was first published in Ada Letters, vol. XVII, no. 6, Nov/Dec 1997.

Page last modified: 1998-02-09