liveBook · Manning

What you will learn in Grokking Concurrency

by Kirill Bobrov

Chapter by chapter

Chapter 1: Introducing concurrency

1.1 Why is concurrency important? · 1.2 Increasing system performance · 1.3 Solving complex and large problems · 1.4 Layers of concurrency · 1.5 What you’ll learn from this book · 1.6 Recap

What you learn in chapter 1 →

Chapter 2: Serial and parallel execution

2.1 Review: What is a program? · 2.2 Serial execution · 2.3 Sequential computations · 2.4 Pros and cons of sequential computing · 2.5 Parallel execution · 2.6 How to speed up the process of doing the laundry · 2.7 Parallel computing requirements · 2.8 Task independence · 2.9 Hardware support · 2.10 Parallel computing · 2.11 Amdahl’s law · 2.12 Gustafson’s law · 2.13 Concurrency vs. parallelism · 2.14 Recap

What you learn in chapter 2 →

Chapter 3: How computers work

3.1 Processor · 3.2 Cache · 3.3 CPU execution cycle · 3.4 Runtime system · 3.5 Design of computer systems · 3.6 Multiple levels of concurrent hardware · 3.7 Symmetric multiprocessing architecture · 3.8 Taxonomy of parallel computers · 3.9 CPU vs. GPU · 3.10 Recap

What you learn in chapter 3 →

Chapter 4: Building blocks of concurrency

4.1 Concurrent programming steps · 4.2 Processes · 4.3 Process internals · 4.4 Process states · 4.5 Multiple processes · 4.6 Threads · 4.7 Thread features · 4.8 Thread implementation · 4.9 Recap

What you learn in chapter 4 →

Chapter 5: Interprocess communication

5.1 Types of communication · 5.2 Shared-memory IPC · 5.3 Message-passing IPC · 5.4 Thread pool pattern · 5.5 Cracking passwords, revisited · 5.6 Recap

What you learn in chapter 5 →

Chapter 6: Multitasking

6.1 CPU-bound and I/O-bound applications · 6.2 CPU-bound · 6.3 I/O-bound · 6.4 Identifying bottlenecks · 6.5 The need for multitasking · 6.6 Multitasking from a bird’s-eye view · 6.7 Preemptive multitasking · 6.8 Arcade machine with preemptive multitasking · 6.9 Context switching · 6.10 Multitasking environments · 6.11 Multitasking OSs · 6.12 Task isolation · 6.13 Task scheduling · 6.14 Recap

What you learn in chapter 6 →

Chapter 7: Decomposition

7.1 Dependency analysis · 7.2 Task decomposition · 7.3 Task decomposition: Pipeline pattern · 7.4 Data decomposition · 7.5 Loop-level parallelism · 7.6 Map pattern · 7.7 Fork/Join pattern · 7.8 Map/Reduce pattern · 7.9 Granularity · 7.10 Recap

What you learn in chapter 7 →

Chapter 8: Solving concurrency problems: Race conditions and synchronization

8.1 Shared resources · 8.2 Race conditions · 8.3 Synchronization · 8.4 Mutual exclusion · 8.5 Semaphores · 8.6 Atomic operations · 8.7 Recap

What you learn in chapter 8 →

Chapter 9: Solving concurrency problems: Deadlocks and starvation

9.1 Dining philosophers · 9.2 Deadlocks · 9.3 Arbitrator solution · 9.4 Resource hierarchy solution · 9.5 Livelocks · 9.6 Starvation · 9.7 Designing synchronization · 9.8 Producer-consumer problem · 9.9 Readers-writer problem · 9.10 A last few words · 9.11 Recap

What you learn in chapter 9 →

Chapter 10: Nonblocking I/O

10.1 The distributed world · 10.2 Client-server model · 10.3 Network sockets · 10.4 Pizza-ordering service · 10.5 A need for concurrency · 10.6 Threaded pizza server · 10.7 C10k problem · 10.8 Blocking I/O · 10.9 An example · 10.10 OS optimization · 10.11 Nonblocking I/O · 10.12 Recap

What you learn in chapter 10 →

Chapter 11: Event-based concurrency

11.1 Events · 11.2 Callbacks · 11.3 Event loop · 11.4 I/O multiplexing · 11.5 Event-driven pizza server · 11.6 Reactor pattern · 11.7 Synchronization in message passing · 11.8 I/O models · 11.9 Synchronous blocking model · 11.10 Synchronous nonblocking model · 11.11 Asynchronous blocking model · 11.12 Asynchronous nonblocking model · 11.13 Recap

What you learn in chapter 11 →

Chapter 12: Asynchronous communication

12.1 A need for asynchrony · 12.2 Asynchronous procedure calls · 12.3 Cooperative multitasking · 12.4 Coroutines (user-level threads) · 12.5 Cooperative multitasking benefits · 12.6 Future objects · 12.7 Cooperative pizza server · 12.8 Event loop · 12.9 Cooperative pizza server implementation · 12.10 Asynchronous pizza joint · 12.11 Conclusions on the asynchronous model · 12.12 Recap

What you learn in chapter 12 →

Chapter 13: Writing concurrent applications

13.1 So, what is concurrency? · 13.2 Foster’s methodology · 13.3 Matrix multiplication · 13.4 Partitioning · 13.5 Communication · 13.6 Agglomeration · 13.7 Mapping · 13.8 Implementation · 13.9 Distributed word count · 13.10 Partitioning · 13.11 Communication · 13.12 Agglomeration · 13.13 Mapping · 13.14 Implementation · 13.15 Recap

What you learn in chapter 13 →

Concepts explained in this book

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.