.learn() - page 7
what I have learned so far
-
The link layer - delivery within one network
How do two devices on the same network find each other? MAC addresses and switches, and ARP, which turns an IP address into a MAC address.
-
Concurrency bugs and debugging
Why do concurrency bugs only fire "sometimes"? What deadlocks, data races, and false sharing really are, and how to catch hard-to-reproduce bugs with ThreadSanitizer.
-
Networks and layering - why the internet was split into layers
How do you divide up an enormous communication problem? The choice of packet switching, and the layered design that makes each layer answer only for its own job.
-
atomic and the memory model
How is sharing without locks possible? std::atomic and CAS, reordering by the compiler and CPU, and the seq_cst, acquire/release, and relaxed memory orderings with happens-before.
-
Handling results with future, promise, and async
How do you get back the one result a thread computed? future/promise, which strips away the mutex+cv plumbing, std::async, packaged_task, and exception propagation across thread boundaries.