
Contents
1 Introduction 1
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Navigating the concurrency sea . . . . . . . . . . . . . 3
1.2 Where does concurrency appear? . . . . . . . . . . . . . . . 6
1.3 Why is concurrency considered hard? . . . . . . . . . . . . . 9
1.3.1 Real-world concurrency . . . . . . . . . . . . . . . . . 9
1.4 Timeliness . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5.1 Intended audience . . . . . . . . . . . . . . . . . . . . 13
1.5.2 Acknowledgments . . . . . . . . . . . . . . . . . . . . 14
1.6 Exercises