Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Existují dva způsoby implementace multitaskingu: jako jeden proces s více vlákny nebo jako více procesů, každý s jedním nebo více vlákny. Aplikace může umístit každé vlákno, které vyžaduje privátní adresní prostor a privátní prostředky do vlastního procesu, aby ho chránila před aktivitami jiných vláken procesu.
Vícevláknový proces může spravovat vzájemně se vylučující úlohy pomocí vláken, jako je poskytování uživatelského rozhraní a provádění výpočtů na pozadí. Vytvoření vícevláknového procesu může být také pohodlný způsob, jak strukturovat program, který současně provádí několik podobných nebo identických úloh. Pojmenovaný kanálový server může například vytvořit vlákno pro každý proces klienta, který se připojí k kanálu. Toto vlákno spravuje komunikaci mezi serverem a klientem. Váš proces může k provedení následujících úloh použít více vláken:
- Umožňuje spravovat vstup pro více oken.
- Umožňuje spravovat vstupy z několika komunikačních zařízení.
- Rozlišovat úkoly s různou prioritou Vlákno s vysokou prioritou například spravuje úlohy kritické pro čas a vlákno s nízkou prioritou provádí jiné úlohy.
- Umožňuje uživatelskému rozhraní zůstat responzivní a současně přidělovat čas úlohům na pozadí.
Pro aplikaci je obvykle efektivnější implementovat multitasking vytvořením jednoho vícevláknového procesu, nikoli vytvořením vícevláknového procesu, a to z následujících důvodů:
- Systém může pro vlákna provádět přepínač kontextu rychleji než procesy, protože proces má větší režii než vlákno (kontext procesu je větší než kontext vlákna).
- Všechna vlákna procesu sdílejí stejný adresní prostor a mají přístup ke globálním proměnným procesu, což může zjednodušit komunikaci mezi vlákny.
- Všechna vlákna procesu mohou sdílet otevřené popisovače prostředků, jako jsou soubory a potrubí.
Existují i jiné techniky, které můžete použít místo multithreadingu. Nejdůležitější z těchto možností jsou následující: asynchronní vstup a výstup (vstupně-výstupní operace), porty pro dokončování vstupně-výstupních operací, asynchronní volání procedur (APC) a schopnost čekat na více událostí.
Jedno vlákno může iniciovat více časově náročných vstupně-výstupních požadavků, které se můžou spouštět souběžně pomocí asynchronních vstupně-výstupních operací. Asynchronní vstupně-výstupní operace lze provádět na souborech, kanálech a sériových komunikačních zařízeních. Další informace naleznete v tématu Synchronizace a překrývání vstupu a výstupu.
Jedno vlákno může blokovat vlastní spuštění při čekání na výskyt jedné nebo všech několika událostí. To je efektivnější než použití více vláken, každé čekání na jednu událost a efektivnější než použití jednoho vlákna, které spotřebovává čas procesoru tím, že průběžně kontroluje, jestli se události vyskytují. Pro více informací viz Wait Functions.