Concurrency in Ada

Front Cover
Cambridge University Press, Feb 19, 1998 - Computers - 390 pages
A major feature of the Ada programming language is the facilities it provides for concurrent programming. Alan Burns and Andy Wellings provide here a thorough and self-contained account of concurrent programming in Ada, and so show users, even beginners, how to harness the full power of the whole language. After giving an overview of the non-concurrent features of Ada, the authors proceed to examine in detail the uses of concurrent programming and the inherent difficulties in providing inter-process communication. The Ada tasking model is then introduced; the way it deals with these and related matters is explained in a number of separate chapters, covering system programming, real-time issues, distribution, object-oriented programming and re-use. This is the first book which deals with concurrent features in the new Ada standard, and it offers practical advice to the programmer needing to use it for embedded systems, while those interested more broadly in the development of programming languages will find many otherwise inaccessible issues probed in depth. It will thus be of value to professional software engineers and advanced students of programming alike; indeed, every Ada programmer will find it essential reading and a primary reference work. For the paperback edition the authors have made revisions throughout the text, updating and correcting where appropriate.
 

What people are saying - Write a review

We haven't found any reviews in the usual places.

Contents

The Ada Language
1
11 Programming in the small
2
12 Packages and library units
9
13 Generics
15
14 Exception handling and type security
16
15 Further reading
20
The Nature and Uses of Concurrent Programming
21
21 Uses of concurrent programming
22
78 Elaboration finalisation and exceptions
151
79 Shared data
152
710 Shared variables
157
711 Volatile and atomic data
161
712 Task states
165
Avoidance Synchronisation and the Requeue Facility
167
82 Semantics of requeue
178
83 Requeuing to other entities
181

22 Program entities
24
23 Process representation
25
24 A simple embedded system
27
25 Clocks and time
34
26 Summary
40
InterProcess Communication
41
32 Synchronisation
43
33 Deadlocks and indefinite postponements
44
34 System performance correctness and reliability
45
35 Dining philosophers problem
47
36 Shared variables and protected variables
49
37 Semaphores
51
38 Monitors
53
39 Messagebased communication
56
310 Summary
61
311 Further reading
62
Ada Task Types and Objects
63
41 Task creation
64
42 Task activation execution finalisation and termination
72
43 Task hierarchies
78
44 Task identification
82
45 Task creation communication and synchronisation within task finalisation
83
46 Task states
84
47 Summary
85
The Rendezvous
87
52 The entry statement
89
53 The accept statement
91
54 Entry families
96
55 Threeway synchronisation
98
56 Private entries
99
57 Exceptions and the rendezvous
101
58 Task states
102
59 Summary
103
The Select Statement and the Rendezvous
105
62 Guarded alternatives
109
63 Delay alternative
110
64 The else part
114
65 The correct use of guards
116
66 The terminate alternative
118
67 The exception Program_Error
123
68 Summary of the selective accept statement
124
69 Conditional and timed entry calls
125
610 Mutual exclusion and deadlocks
128
611 The dining philosophers
130
612 Task states
133
613 Summary
134
Protected Objects and DataOriented Communication
135
72 Mutual exclusion
136
73 Condition synchronisation
138
74 Entry calls and barriers
140
75 Private entries and entry families
144
76 Restrictions on protected objects
148
77 Access variables and protected types
150
84 Realtime solutions to the resource control problem
185
85 Entry families and server tasks
189
86 Extended example
193
87 Task states
196
Using Protected Objects as Building Blocks
199
91 Semaphores
200
92 Persistent signals
203
93 Transient signals
205
94 Events
206
95 Buffers
208
96 Blackboards
209
97 Broadcasts
210
98 Barriers
214
99 Selective entry calls
215
910 Summary
223
Exceptions Abort and Asynchronous Transfer of Control
225
102 The abort statement
227
103 Asynchronous transfer of control
230
104 Understanding the asynchronous select statement
241
105 A robust readers and writers algorithm
246
106 Task states
250
Tasking and Systems Programming
253
111 Device driving and interrupt handling
255
112 Model of interrupts
259
113 Task identifiers
269
114 Task attributes
272
115 Summary
274
116 Further reading
275
RealTime Programming
277
122 Dynamic priorities
285
123 Synchronisation primitives
292
124 Immediacy of abort
296
125 Restricted tasking
297
126 Other provisions
300
128 Further reading
301
ObjectOriented Programming and Tasking
303
132 Synchronisation protected units and tagged types
312
133 Reusable and extensible communication abstractions
319
134 Tasks and tagged types
332
135 Summary
337
Distributed Systems
339
141 The Ada model of distribution
340
142 Program elaboration and termination
346
144 Programming paradigms for distributed systems
349
145 Tolerance of processing element failure
366
146 Summary
371
147 Further reading
372
Conclusion
373
152 Outstanding issues
376
153 The future
378
References
379
Index
383
Copyright

Common terms and phrases

Bibliographic information