Ada* is unquestionably one of the most significant programming languages to emerge in the last decade. The manner of its inception and support by the US Department of Defense (DoD) ensures that it will be used extensively for the indefinite future in programming large and complex systems. The growing availability of compilers means that many organisations are already committed to using the language for sizable and significant applications. As a perhaps inevitable result of its design goals, Ada is a "large" language. It has Pascal-like control and type constructs; a mechanism for exception handling; a package structure for information hiding, decomposition and separate compilation; facilities for low-level programming; and a tasking model of concurrency. It is perhaps this last area that has generated most debate, criticism and disagreement. The purpose of this book is to review the tasking model in the light of the extensive analysis and comment which has appeared in the literature. The review is necessarily wide-ranging, including discussion of - Ada as a general purpose concurrent programming language, - Ada as a language for embedded and distributed systems, - implementation issues, with particular reference to distributed systems, - formal semantics, specification and verification, - proposed language modifications. By consolidating this discussion within the confines of a single review, potential users of the tasking facility are enabled to familiarise themselves with all the factors which may impinge upon the performance, reliability and correctness of their software. The book also provides a focus for any debate on modifications to the Ada language, or developments from it.