📄️ Memory Model
The C++ memory model defines how threads interact through memory, including visibility of writes, ordering of operations, and synchronization primitives.
📄️ Atomics & Fences
Atomic operations execute as single, indivisible steps with no interference from other threads. Memory fences (barriers) establish ordering constraints between operations.
📄️ Data Races
A data race occurs when two or more threads access the same memory location concurrently, at least one access is a write, and there's no synchronization between them. Data races cause undefined behavior.
📄️ Threads
Threads allow programs to perform multiple operations concurrently. C++11 introduced std::thread for portable threading.
📄️ Mutexes
A mutex (mutual exclusion) is a synchronization primitive that protects shared data by allowing only one thread to access it at a time.
📄️ Condition Variables
Condition variables allow threads to wait for specific conditions to become true, enabling efficient thread coordination beyond simple mutexes.
📄️ Futures & Promises
Futures and promises provide a mechanism for asynchronous computation: one thread computes a value and another retrieves it later.
📄️ Thread Pools
A thread pool manages a fixed set of worker threads that execute tasks from a queue, avoiding the overhead of creating and destroying threads repeatedly.