GitHub - g-berthiaume/effective_concurrency: Herb Sutter's Effective Concurrency Column Archive

3 min read Original article ↗

If you search the web for articles about low-level concurrency, you're bound to come across references to Herb Sutter's Effective Concurrency column. Published between 2007 and 2010 in Dr. Dobb's Journal, these articles focused on building a consistent mental model for reasoning about concurrency.

Now that Dr. Dobb's Journal has been closed, those articles have effectively been lost.
Even the Internet Archive's Wayback Machine seems to have only archived the first page of each article. While they may no longer be fully up to date, I believe they're still valuable.

This repo is my attempt to find and archive those articles.

List

Note that the quality varies, ranging from okay to great.

Currently missing (3/33): No 19, No 29 and No 30.

No Name
EC #1 The Pillars of Concurrency
EC #2 How Much Scalability Do You Have or Need?
EC #3 Use Critical Sections (Preferably Locks) to Eliminate Races
EC #4 Apply Critical Sections Consistently
EC #5 Avoid Calling Unknown Code While Inside a Critical Section
EC #6 Use Lock Hierarchies to Avoid Deadlock
EC #7 Break Amdahl's Law!
EC #8 Going Superlinear
EC #9 Super Linearity and the Bigger Machine
EC #10 Interrupt Politely
EC #11 Maximize Locality, Minimize Contention
EC #12 Choose Concurrency-Friendly Data Structures
EC #13 The Many Faces of Deadlock
EC #14 Lock-Free Code: A False Sense of Security
EC #15 Writing Lock-Free Code: A Corrected Queue
EC #16 Writing a Generalized Concurrent Queue
EC #17 Understanding Parallel Performance
EC #18 Measuring Parallel Performance: Optimizing a Concurrent Queue
EC #19 volatile vs. volatile
EC #20 Sharing Is the Root of All Contention
EC #21 Use Threads Correctly = Isolation + Asynchronous Messages
EC #22 Use Thread Pools Correctly: Keep Tasks Short and Nonblocking
EC #23 Eliminate False Sharing
EC #24 Break Up and Interleave Work to Keep Threads Responsive
EC #25 The Power of "In Progress"
EC #26 Design for Manycore Systems
EC #27 Avoid Exposing Concurrency – Hide It Inside Synchronous Methods
EC #28 Prefer Structured Lifetimes - Local, Nested, Bounded, Deterministic
EC #29 Prefer Futures to Baked-In "Async APIs"
EC #30 Associate Mutexes with Data to Prevent Races
EC #31 Prefer Using Active Objects Instead of Naked Threads
EC #32 Prefer Using Futures or Callbacks to Communicate Asynchronous Results
EC #33 Know When to Use an Active Object Instead of a Mutex

Thanks

Thanks to Jacob Filipp for hosting the Dr. Dobbs DVD (most of the pdf comes from there).

Thanks to Miro Samek for No 31 and No 33.

Thanks to Pete Shearer for No 32.

Thanks to Herb Sutter for writing those articles.

Copyright

This is an archiving project. I do not own any of those articles.

If you are Herb Sutter and you want this repo to be modified or deleted, please reach out.