Threads Considered Harmful
Slides
More resources
Introduction
- Edgar Dijkstra, Go To Considered Harmful, Communication of the ACM, March, 1968 — the famous paper that started the "X Considered Harmful" trend in CS
- Corrado Böhm, Giuseppe Jacopini, Flow Diagrams, Turing Machines and Languages With only Two Formation Rules, Communication of the ACM, May, 1966 — shows how all programs can be represented by sequence, selection and repetition; one of the firsts papers advocating the use of flow diagrams in CS
- Dexter Kozen, Wei-Lung Dustin Tseng, The Böhm-Jacopini Theorem is False, Propositionally, International Conference on Mathematics of Program Construction. Springer, Berlin, Heidelberg, 2008
- Kevlin Henney, The Forgotten Art of Structured Programming, C++ on Sea 2019 — a lot of great information on structured programming
— See also:
The Problem With Threads
- Edward A. Lee, The Problem with Threads, Technical Report UCB/EECS-2006-1, 2006 — good description of the main problems in using raw threads and locks. The tile of the section is indirectly referencing this paper.
- Kevlin Henney, Concurrency Versus Locking, 2 Minute Tech Tip — nice analogy that explains the performance problem with locking
- Kevlin Henney, Thinking Outside the Synchronisation Quadrant, ACCU 2017 — good description of the problems with threads; a lot of inspiration for this talk
- Sean Parent, Better Code: Concurrency, NDC London 2017 — formulates the "no raw threads" principle, and attempts to build a higher-level replacement
A General Solution
- Lucian Radu Teodorescu, Refocusing Amdahl’s Law, Overload 157, June 2020
- Lucian Radu Teodorescu, The Global Lockdown of Locks, Overload 158, August 2020
Coordination without Synchronization
- Lucian Radu Teodorescu, The Global Lockdown of Locks, Overload 158, August 2020
Composability and Decomposability
— more details can be found in an article that I’ve submitted for ACCU’s Overload; hopefully this will get accepted
An Example
- Michael Andersch, Chi Ching Chi, Prof. Dr. Ben Juurlink, Starbench parallel benchmark suite — the benchmark containing the h264dec program that we are taking about
- Salient Systems Corp, How does H.264 work?, Whitepaper — more details on the H.264 algorithm
- Iain E. G. Richardson, H.264/MPEG4 Part 10, 2003 — more details on the H.264 algorithm
- Lucian Radu Teodorescu, Concore library
- Lucian Radu Teodorescu (on top of Starbench repo), h264dec-concore
Concurrency Patterns
- Michael McCool, Arch D. Robison, James Reinders, Structured Parallel Programming: Patterns for Efficient Computation, Morgan Kaufmann, 2012 — besides describing a lot of patterns in concurrency programming, this also advocates for raising the abstractions for concurrency
- Lucian Radu Teodorescu, Concurrency Design Patterns, Overload 159, October 2020
Images copyright
- Omar Flores, assorted-color yard threads photo
- Merriam-Webster, bottleneck
- Jace & Afsoon, Trocadero from Eiffel Tower
- Greg Rakozy, silhouette photography of person photo
- Basil James, gray stainless steel padlock photo
- kaleb tapp, Arrow
- Rahul Anand, gray rocks stacked on large rock at the beatch photo
- Sandy Millar, Keep out sign at abandoned property
- Chris Gresham-Britt, A collection of threads on a white wall