Hardcover: 476 pages
Publisher: Cambridge University Press; 3rd edition (July 16, 2007)
Product Dimensions: 6.8 x 1.1 x 9.7 inches
Shipping Weight: 2.1 pounds (View shipping rates and policies)
Average Customer Review: 4.8 out of 5 stars See all reviews (6 customer reviews)
Best Sellers Rank: #139,379 in Books (See Top 100 in Books) #5 in Books > Computers & Technology > Programming > Languages & Tools > Ada #157 in Books > Textbooks > Computer Science > Software Design & Engineering #355 in Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Software Development
Fully harnessing multi-core processors requires concurrent programming, yet most mainstream languages have little support or do so with poor portability. Well-written concurrent Ada programs can be extremely portable and support multi-core and multiple processors automatically. This book explores, in-depth, the concurrent programming ("tasking") part of the Ada language. The authors then show how the concurrent programming facilities of Ada are augmented by the language to support real-time programming. These standard real-time facilities are state-of-the-art, extending, for example, beyond the POSIX real-time facilities in their expressive power.The book first establishes the necessary foundation for understanding concurrent programming by explaining the possible problems (e.g., deadlocks and race conditions) and highlighting some of the mechanisms traditionally used in concurrent programming, such as semaphores and message-passing.The tasking part of Ada is then covered in full detail, necessarily including interactions with some other parts of the language, such as exceptions, but also including interactions with the Ada object-oriented language facilities. The implementations of a number of reusable concurrency abstractions serve to illustrate the use of the tasking features.The authors next lay another foundation, this time for scheduling in real-time systems, and show how Ada directly supports the common approaches. Both fixed-priority and dynamic-priority dispatching are supported by Ada and these are covered in detail. Ada 2005 also defines a number of time-related abstractions, such as a monotonic clock and timing events, and these are also covered completely.