Backend Engineering · Concurrency · Distributed Systems
Notes on backend engineering, concurrency, distributed systems, data systems, and software engineering practice.
Start Here
All Series →- Concurrency ProgrammingActive
Starts from the boundaries of concurrency problems, then builds toward hardware memory models, language-level concurrency semantics, and the mechanisms behind common concurrency primitives.
9 articles · Java · JUC
Latest Articles
All Articles →- Concurrency Programming (0): The Problem Space and Scope
Defines the scope as concurrency within a single process on a single machine, then connects shared variables, shared memory, message passing, language concurrency semantics, and hardware implementation.
- Concurrency Programming (8): From Mutex to Read-Write Locks
Continues with counter and counter + ready to explain how read-write locks allow concurrent readers, comparing Java's Lock API, Go sync.RWMutex, and the situation in CPython.
- Concurrency Programming (3): Mutexes — Atomicity, Visibility, and Ordering at the Language Level
Continues with counter++ to explain how mutexes provide atomicity, visibility, and ordering, then compares Java synchronized, Go sync.Mutex, and CPython threading.Lock.
- Concurrency Programming (2): Language Memory Models — Rules Programmers Can Rely On
Moves from hardware memory models back to the language layer: why languages need their own concurrency semantics, and what Java, Go, and CPython guarantee to concurrent programs.
- Concurrency Programming (1): Start with the Hardware — From count++ to Atomicity, Visibility, and Ordering
Starting from the von Neumann architecture and instruction execution, this article follows count++ down to the hardware-level problems of atomicity, visibility, and ordering.