Přeskočit na obsah
Modul 7

Souběžnost

Napište správné, efektivní vícevláknové C++ – vlákna, synchronizace, atomické a paralelní algoritmy.

Vlákna a synchronizace

  1. 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.

  2. 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.

  3. 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

  1. 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.

  2. 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).

  3. 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ů.