Kurz je určen pro pokročilé vývojáře, kteří se chtějí seznámit s novými koncepty a třídami pro tvorbu přenositelných vícevláknových aplikací s pomocí standardních C++ 11 knihoven. Vysvětlíme typické problémy [...]
  • CPP_THR
  • Délka 1 den
  • 10 ITK bodů
  • 5 termínů
  • Praha (5 300 Kč)

    Brno (5 300 Kč)

    Bratislava (185 €)

Kurz je určen pro pokročilé vývojáře, kteří se chtějí seznámit s novými koncepty a třídami pro tvorbu přenositelných vícevláknových aplikací s pomocí standardních C++ 11 knihoven. Vysvětlíme typické problémy paralelních aplikací jako souběh operací na sdílených datech ("race condition") nebo uváznutí ("deadlock"). Představíme vlákna ("threads") a použítí paralelních úloh ("task parallelism"). Uvidíme kritické sekce důležité pro vzájemné vyloučení vláken a jejich použití u objektů typu "monitor". Podíváme se na předávání zpráv, výhody neblokujících operací a atomické datové typy.

»

Kurz je určen pro pokročilé vývojáře, kteří se chtějí seznámit s novými koncepty a třídami pro tvorbu přenositelných vícevláknových aplikací s pomocí standardních C++ 11 knihoven.

  • Používat třídy a funkce z moderních C++ 11 vícevláknových knihoven.
  • Vytvářet aplikace schopné využít současný masivně paralelní hardware.
  • Přemýšlet o základních problémech návrhu paralelního software.
  • Zkušenost s programováním v jazyce C++.
  • Třídy, konstruktory, destruktory, automatická správa zdrojů.
  • Velikou výhodou jsou předchozí zkušenosti s tvorbou vícevláknových aplikací pomocí jiných knihoven (Posix, WinAPI, MFC, ...).

1. Vlákna

  • Vytváření vláken pomocí třídy thread.
  • Fork and join model
  • Samostatná vlákna.
  • Předávání parametrů.
  • Transport výjimek.

2. Paralelní úlohy

  • Vytváření paralelních úloh pomocí async.
  • Návratová hodnota paralelní úlohy, třída future.
  • Čekání na výsledek paralelní úlohy.
  • Třída packaged_task.
  • Třída promise a detaily třídy future.
  • Třída shared_future.

3. Kritické sekce

  • Třída mutex
  • Vztah "happens-before", zamykání a odemykání.
  • Třída lock_guard a unique_lock
  • Monitor objekty.
  • Jednorázová inicializace pomocí call_once.

4. Signalizování pomocí condition variables

  • Producent a konzument. Metody notify a wait.
  • Falešné probuzení (spurious wakeup).
  • Protokol kolem změny stavu sdílené proměnné.

5. Atomické typy

  • Třída atomic
  • Blokující a neblokující operace.
  • Lock-free datové struktury.
Aktuální nabídka
Školicí místo
Jazyk kurzu

Uvedené ceny jsou bez DPH.