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.
Coroutines
A coroutine is a function that can suspend itself, hand control back to its caller, and later