Paralelismus

Při programování aplikací pro dnešní vícejádrové a víceprocesorové systémy se souběžností a paralelismem vyplatí zabývat. Jednoduchými úpravami našich programů získáme nezanedbatelný nárůst výkonu.

Vlákna

Modul Control.Concurrent nám umožňuje pracovat s vlákny, která se dají vytvářet pomocí funkce forkIO. Tato vlákna můžeme synchronizovat přes hodnoty MVar a zasíláním zpráv přes kanály Chan. Tyto mechanismy nám pomáhají vyvarovat se typickým problémům uváznutí a vyhladovění.

Paralelismus a STM

Různé paralelní strategie zavádí modul Control.Parallel.Strategies. Koncept vláken rozšiřuje tzv. Software Transactional Memory, která přidává atomicitu.

Více informací lze nalézt na Wikipedii, Wikibooks a ve dvacáté čtvrté a dvacáté osmé kapitole knihy Real World Haskell.

Při překladu programu je potřeba překladači GHC předat parametr -threaded a při spuštění určit počet jader (v rámci nastavení +RTS) parametrem -N.

← IB016