Thinking Outside the Synchronisation Quadrant
summary
Argument shows why mutable shared state sits in a costly synchronisation quadrant and gives concrete C++ remedies: replace ad‑hoc threads+locks with channels and queues, use actor via queue+thread for private state, and wire pipes‑and‑filters for data flow. Demonstrations include a bounded/unbounded queue prototype, a Friday‑the‑13th pipeline, and a phonebook actor implemented with std::thread plus condition_variable. Benchmarks and studies cited include 200× faster than Hadoop CLI cases and 77% detected by unit tests, and C++17/Parallel TS features (for_each/reduce, futures) are used.
AI-written summary · about
chapters (12)
- 0:00Intro
- 0:17Thinking Outside the Synchronisation Quadrant
- 1:08Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.
- 28:22habitable
- 30:57We want our code to be unit testable.
- 31:31fails, it shows the code is incorrect.
- 33:19asynchronous
- 36:39Languages such as Erlang and occam before it have shown that processes are a very successful mechanism for programming concurrent and parallel systems. Such systems do not have all the synchronization stresses that shared- memory, multithreaded systems have.
- 39:00queues
- 50:50Pipes and Filters Divide the application's task into several self- contained data processing steps and connect these steps to a data processing pipeline via intermediate data buffers.
- 56:57monitor objects
- 59:33active objects
related talks
01h 35mThinking Outside the Synchronisation Quadrant
01h 16mDesigning for C++ Concurrency Using Message Passing
54mDesigning for Concurrency Using Message Passing in C++
47m“Multithreading is the answer. What is the question? (part 1 of 2)”
59mAn Introduction to Multithreading in C++20
01h 04mBack to Basics: Concurrency
55mWhat Can C++ Learn About Thread Safety From Other Languages?
01h 07mBuilding Robust Inter-Process Queues in C++
