Souběžnost
Napište správné, efektivní vícevláknové C++ – vlákna, synchronizace, atomické a paralelní algoritmy.
Vlákna a synchronizace
std::thread, std::jthread & Thread Management
Naučte se vytvářet a spravovat vlákna pomocí std::thread a std::jthread C++20. Pochopte spojení vs odpojení, kooperativní zrušení s tokeny zastavení, místní úložiště vláken a zpracování výjimek napříč hranicemi vláken.
Mutexy, zámky a kritické sekce
Hlavní synchronizační primitiva: mutex, lock_guard, unique_lock, scoped_lock, shared_mutex. Naučte se chránit sdílená data, předcházet uváznutí a pochopit rozdíl mezi závody dat a podmínkami závodu.
Stavové proměnné a výrobce-spotřebitel
Použijte proměnné podmínky k efektivní koordinaci vláken. Vybudujte vláknově bezpečnou frontu producent-spotřebitel, zpracujte falešná probuzení a vyhněte se ztraceným problémům s probuzením.
Async, atomy a paralelismus
std::async, std::future & std::promise
Používejte abstrakce souběžnosti vyšší úrovně: spouštějte asynchronní úlohy pomocí std::async, načtěte výsledky pomocí std::future a ručně nastavte hodnoty nebo výjimky pomocí std::promise.
Atomové operace a uspořádání paměti
Pochopte programování bez zámku pomocí std::atomic. Zvládněte uspořádání paměti (uvolněná, nabytá, uvolněná, seq_cst), implementujte spinlock s atomic_flag a naučte se vzor porovnat a vyměnit (CAS).
Paralelní algoritmy a zásady provádění
Využijte paralelní STL C++17 k paralelizaci třídění, transformace a redukce se zásadami provádění. Pochopte, kdy pomáhá paralelismus, Amdahlův zákon a praktický návrh fondu závitů.