JosefJezek
7/11/2014 - 12:08 PM

Techniky paralelního programování

Techniky paralelního programování

Techniky paralelního programování

Paralelizace má smysl použít i u menších aplikací a ne jen u komplexních systémů. Využít se dá například při scrapování obsahu stránek nebo volání vzdáleného API, kdy nechceme zbytečně čekat na odpověď a blokovat vlákno.

Klíčové pojmy

  • Future
  • výpočet se pustí na pozadí a pro data si sáhneme až je budeme potřebovat
  • Promise
  • vydáme se po třech různých cestách pro data a definujeme jedno úložné místo, kam to první doběhnuvší funkce uloží
  • PValues
  • místo výsledku se okamžitě vrátí lazy (tedy prázdná) kolekce, která se na pozadí dopočítá než ji budeme potřebovat
  • PMap
  • aplikuje na všechny prvky pole funkci v jeden okamžik
  • počet prvků / počet jader = jedna dávka
  • obrovské zrychlení výpočtů
  • Amdalův zákon – http://en.wikipedia.org/wiki/Amdahl’s_law
  • přidávání jader nezrychluje algoritmus do nekonečna
  • STM – http://en.wikipedia.org/wiki/Software_transactional_memory
  • Softwarová transakční paměť
  • pokud se v průběhu výpočtu změní výchozí data, výpočet se po neúspěšném pokusu o uložení prostě zopakuje a nedojde tak ke konfliktu
  • funkce musí být idempotentní, tzn. nesmí vynucovat side efekty
  • Actor-based model
  • Pattern matching
  • Communicating Sequential Processes CSP
  • "potrubní pošta"
  • ZeroMQ – http://zeromq.org/

Jazyky