~/talk

Taming Mutexes for Concurrency

Talkat GoLab 2019 · 2019-10-20..10-22· [concurrency, go]
slides:none on file

Describes a production design that replaces daily batch ranking with a real‑time service for Vivino, using fine‑grained RW mutex locking around split/joined segments to avoid global contention. Segments settle around 2000 elements per segment and the largest list reaches six million elements across 4,000 segments. Service sustains about 33 million requests per day with 2.7 million daily updates; wrapping lock acquisition in a single helper object reduces ordering bugs and makes deadlocks testable.

AI-written summary · about

  1. 0:00Introduction to mutex challenges
  2. 1:05Real-world database case study
  3. 7:10Mutex options and trade-offs
  4. 10:23Typical locking designs
  5. 12:32Requirements and initial approach
  6. 13:16Common locking pitfalls
  7. 16:35Problems with nested locking
  8. 17:00Wrapping locks in functions
  9. 20:37Reducing locking complexity
  10. 23:08Nested locking order proof
  11. 23:51Testing for dangling locks
  12. 25:42Performance metrics overview
  13. 27:58Conclusion and key advice
  14. 29:09Q&A session
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.