This book provides a detailed exposition of concurrency in Ada. It is well structured, includes numerous exercises, and would be a suitable basis for an advanced course in concurrency and real-time systems using Ada. A series of five case studies illuminates the use of Ada’s concurrency features from the programmer’s viewpoint.
The book comprises four parts. Part 1 provides an overview of the issues addressed in the text and introduces basic concepts and notation. The first case study, a hotline communications system, establishes the overall architecture of a concurrent Ada program.
Part 2 deals with methods of communication between tasks. It explains the concept of a rendezvous thoroughly and introduces the concepts of a caller and called tasks. Shumate also discusses several techniques that exploit the rendezvous: the producer-consumer model, bounded buffers, and the buffer-transporter model.
Part 3 details the Ada tasking model. The author introduces tasks as objects with types and discusses some issues related to the activation, execution process, and termination of tasks. The third case study implements a message transmission system.
Part 4 is devoted to low-level issues important to the design of real-time systems. The author provides two case studies. One implements a multiple keyboard handler; the other focuses primarily on interrupts to realize a remote temperature sensor control.
Two appendices use the problem of the cobbler to introduce many Ada concepts. Appendix A provides the problem statements, and Appendix B presents solution to the problems, including code, and discusses overall aspects of this case study. The exercises and solutions are also referenced in the index.
This would be a good text for an advanced introduction to real-time programming and concurrency in Ada. I recommend it highly for a graduate course on this subject. The coverage of concurrency is self-contained, but the student will need previous familiarity with Ada. The numerous exercises and complete solutions for the case studies, together with the good structure, clear exposition, and detailed design discussions, will undoubtedly help the student to master the topic and benefit from the author’s experience.