1.2. Výhody a nevýhody práce s více vlákny
I když existují i další metody jak zajistit souběžné provádění více činností,
například pomocí asynchronního programování s využitím služeb dalších počítačů,
představuje použití více vláken nejvýkonnější dostupnou techniku pro zvýšení
rychlosti odezvy aplikací ve vztahu k uživateli při zajištění současného
zpracování potřebných dat téměř ve stejném čase.
Aplikace využívající více vláken jsou schopny bez další modifikace dramaticky
zlepšit svou odezvu už jen tím, že je spustíme na počítači s více procesory.
Souběžná vlákna lze použít typicky k řešení následujících úloh:
- Komunikace po síti s webovým serverem a databází.
- Provádění operací, které vyžaduje velký objem času.
- Rozlišení mezi úlohami s různou prioritou. Například vlákno
s vysokou prioritou obsluhuje časově kritické úlohy, zatímco vlákno
s nízkou prioritou provádí další činnosti.
- Zajištění rychlé odezvy uživatelského rozhraní se současným
během úloh na pozadí.
Samotným zvyšováním počtu vláken však obvykle odpovídajícího zvýšení výkonu
aplikace nedosáhneme. Naopak se doporučuje, abychom používali co nejméně vláken
a tím omezili spotřebu systémových prostředků a nárůst režie. Použití vláken
může také vést při nevhodném návrhu aplikace k nejrůznějším konfliktům při
soutěžení o některé systémové prostředky. Typické problémy jsou následující:
- Pro ukládání kontextových informací se spotřebovává dodatečná
paměť, a tedy celkový počet procesů a vláken, které mohou v systému
současně existovat, je omezený.
- Obsluha velkého počtu vláken spotřebovává významnou část času
procesoru. Existuje-li tedy příliš mnoho vláken, většina z nich příliš
významně nepostupuje. Navíc pokud je většina vláken v jednom procesu,
dostávají se vlákna jiných procesů na řadu méně často.
- Organizace programu s mnoha vlákny je složitá a může být zdrojem
mnoha chyb. Zejména je obtížné zajistit jejich správnou synchronizaci.
- Rušení vláken vyžaduje dobrou znalost toho, co by se mohlo stát
a jak vzniklé problémy řešit.