BOOK REVIEW Patrick Rogers Camber C o r p o r a t / o n Houston, Texas progersQacm.org Concurrency In Ada, by Alan Burns and Andy Wellings, University of York, UK Cambridge University Press, 1995 ISBN 0-521-41471-7 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 e 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 mu]tiprocessing 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 Ada95 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 Ada83 tasking interaction model. Termed avoidance synchronization, this relative lack has been addressed by the new requeue facility, 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 others, 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 A n n e x 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, the predefined schedulability analysis support is covered, as is the capability for both 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 Ada83 and discusses how and why they were or were not complete. Flaws are not discounted and those areas affected by the 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. A d a Letters, N o v / D e c 1997 Page 108 Volume XVII, N u m b e r 6
/lp/association-for-computing-machinery/book-review-concurrency-in-ada-by-alan-burns-and-andy-wellings-o14yckdN0e