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 [...]
  • CPP_THR
  • Délka 1 den
  • 10 ITK bodů
  • 4 termíny
  • ČR (5 300 Kč)

    SR (230 €)

  • Mírně pokročilý

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.

Školení na míru

Nenašli jste vhodný termín, nebo chcete školení přizpůsobit specifickým potřebám vašeho týmu? Rádi pro vás připravíme školení na míru.