sehr empfehlenswert
Wieder einmal ein Grundlagenwerk: umfassend, eher theoretisch und gut zum nachschlagen.
Doug Lea's "Concurrent Programming in Java" ist praktisch orientierter und zeigt auch gleich den Java Code. Es ist nicht so umfassend wie der Andrews, aber für Java-Programmierer eher das Buch der Wahl. Lea stützt sich aber auch auf dem Andrews ab.
Imperative Programme mit expliziter Parallelität (concurrency), Kommunikation und (vor allem) Synchronisation. Die Kommunikation und Synchronisation erfolgt durch expliziten Zugriff auf gemeinsame Variablen (shared memory) oder den Austausch von Meldungen (message passing).
Part I Basic Concepts Chapter 1 Sequential Programming 1.1 Language Notation 1.2 Logic, Proposition, and Predicates 1.3 A Programming Logic 1.4 Proofs in Programming Logic 1.5 Program Derivation Chapter 2 Concurrency and Synchronisation 2.1 Specifying Concurrent Execution 2.2 Atomic Actions and Synchronisation 2.3 Semantics of Concurrent Programming 2.4 Techniques for Avoiding Interference 2.5 Auxiliary Variables 2.6 Safety and Liveness Properties Historical Notes and References Exercises Part II Shared Variables Chapter 3 Fine-Grained Synchronisation 3.1 The Critical Section Problem 3.2 Critical Sections: Tie-Breaker Algorithm 3.3 Critical Sections: Ticket Algorithm 3.4 Critical Sections: Bakery Algorithm 3.5 Barrier Synchronisation 3.6 Data Parallel Algorithms 3.7 On-The-Fly Garbage Collection 3.8 Implementing Processes Historical Notes and References Exercises Chapter 4 Semaphores 4.1 Notation and Semantics 4.2 Basic Uses and Programming Techniques 4.3 Selective Mutual Exclusion 4.4 General Condition Synchronisation 4.5 Resource Allocation 4.6 Implementation Historical Notes and References Exercises Chapter 5 Conditional Critical Regions 5.1 Noation and Semantics 5.2 Dining Philosophers Revisited 5.3 Readers/Writer Revisited 5.4 Interprocess Communication 5.5 Scheduling and Resource Allocation 5.6 Implementations Historical Notes and References Exercises Chapter 6 Monitors 6.1 Programming Notations 6.2 Formal Semantics and Program Proofs 6.3 Synchronisation Techniques 6.4 Disk Scheduling: Program Structures 6.5 Alternative Approaches to Synchronization 6.6 Implementations Historical Notes and References Exercises Part III Message Passing Chapter 7 Asynchronous Message Passing 7.1 Programming Notation 7.2 Formal Semantics 7.3 Filters: A Sorting Network 7.4 Client and Servers 7.5 Heartbeat Algorithms 7.6 Probe/Echo Algorithms 7.7 Broadcast Algorithms 7.8 Token-Passing Algorithms 7.9 Replicated Servers 7.10 Implementations Historical Notes and References Exercises Chapter 8 Synchronous Message Passing 8.1 Programming Notation 8.2 Formal Semantics 8.3 Network of Filters 8.4 Interaction Parallel Processes 8.5 Clients and Servers 8.6 Implementations Historical Notes and References Exercises Chapter 9 RPC and Rendezvous 9.1 Remote Procedure Call 9.2 Rendezvous 9.3 A Multiple Primitives Notation 9.4 Clients and Servers 9.5 Parallel Algorithms 9.6 Implementations Historical Notes and References Exercises Part IV Practice Chapter 10 Language Overviews 10.1 Turing Plus: Monitors 10.2 Occam: Synchronous Message Passing 10.3 Ada: Rendezvous 10.4 SR: Multiple Primitives 10.5 Linda: Distributed Data Structures 10.6 Comparison and Performance Historical Notes and References Exercises Glossary Bibliography Index
Teils etwas langatmiges Englisch, aber sehr gut verständlich.
Der Autor beschreibt den kompletten Bogen an Möglichkeiten von der einfachen Test-And-Set Instruktion bis zum Messagepassing und lässt dabei fast nichts aus, was die Fachliteratur zu bieten hat; deswegen ist die Bibliografie auch so monströs. Das Buch ist Grundlage für Vorlesungen zum Thema "Concurrent Programming".
Ich habs nie geschaftt das Buch von vorne bis hinten zu lesen, es war einfach zu anstrengend. Aber als Nachschlagewerk ist es echt gut. Auch die Kapitel mit dem historischen Background sind sehr lehrreich.
Ansonsten ist das Buch solide Arbeit und interessanterweise ebenfalls mit troff unter Unix gesetzt -- es sieht eben auch schön aus.
Gregory R. Andrews
1991, Benjamin/Cummings Publishing Company, ISBN 0-8053-0086-4, 637 Seiten
Amazon: http://www.amazon.de/exec/obidos/ASIN/0805300864
Autor: http://www.cs.arizona.edu/people/greg/
Die Alternative für Java von Appel: http://www.amazon.de/exec/obidos/ASIN/0201310090
Critical Section, Semaphor, Barrier, Monitor, Rendezvous, RPC, Algorithmen, Reader/Writer, Producer/Consumer, Dining Philosphers
7-Jan-2003