.learn() - page 8
what I have learned so far
-
condition_variable and synchronisation patterns
How do you put a thread to sleep until a condition holds, and then wake it? The condition_variable that removes busy waiting, why lost and spurious wakeups are prevented, and the producer-consumer work queue.
-
Mutexes and RAII-based locking
Why does data break when several threads touch it at once? The mutex that prevents race conditions, exception-safe RAII locking (lock_guard and unique_lock), and shared_mutex, which distinguishes reads from writes.
-
Interfaces
An interface acts as the contract that governs how objects interact.
-
Softmax and Cross-Entropy
Deriving the softmax Jacobian and the cross-entropy gradient, and why their composition collapses into prediction minus target.
-
Creating and managing threads
What does it mean to run several flows of execution? Creating threads with std::thread, managing their lifetime with join/detach, and C++20 jthread with its automatic join and cooperative cancellation.