Live Lock-Free or Deadlock (Practical Lock-free Programming)
summary
Covers practical lock-free techniques in C++: shows why volatile and naive reorder assumptions fail, demonstrates that compilers can reorder initialization, and that caches can make stores visible out of order so double-checked locking needs atomic acquire/load and release/store semantics. Maps pseudocode to C++11 atomics, explains acquire/release memory barriers, and contrasts full locks with simplified lock-free list and queue approaches while reporting measured tradeoffs between correctness and performance.
AI-written summary · about
chapters (6)
- 0:00Introduction to lock-free
- 7:08Double check locking basics
- 12:12Atomic operations and data races
- 22:36Memory barriers and caches
- 33:16Lock-free programming challenges
- 38:31Break and real examples
related talks
01h 11mLock-Free Programming (or, Juggling Razor Blades), Part II
01h 03mSafety: off --- How not to shoot yourself in the foot with C++ atomics
01h 38mLock-free Programming is Dead - Long Live Lock-free Programming!
53mAtomics, Locks, and Tasks (part 1 of 2)
01h 06mLocks are tricky — let's understand them by building one
26mConcurrency: Unlocking a Solution
01h 00mConcurrency in C++20: A Deep Dive
19mIntroduction to Lock/Wait Free Algorithms - Defining and Understanding the Terms
