Sdílet prostřednictvím


Plánovač úloh (Concurrency Runtime)

Témata v této části dokumentace popisují důležité funkce plánovače úloh Concurrency Runtime. Plánovač úloh je užitečný, když chcete doladit výkon stávajícího kódu, který používá Concurrency Runtime.

Důležité

Plánovač úloh není k dispozici z aplikace Univerzální platforma Windows (UPW). Další informace najdete v tématu Vytváření asynchronních operací v jazyce C++ pro aplikace pro UPW.

V sadě Visual Studio 2015 a novějších používá třída concurrency::task třídy a související typy v ppltasks.h fond vláken Windows jako svůj plánovač. Toto téma již neplatí pro typy definované v souboru ppltasks.h. Paralelní algoritmy, jako je parallel_for, nadále používají modul Concurrency Runtime jako výchozí plánovač.

Tip

Concurrency Runtime poskytuje výchozí plánovač, a proto ho v aplikaci nemusíte vytvářet. Vzhledem k tomu, že plánovač úloh pomáhá vyladit výkon vašich aplikací, doporučujeme začít knihovnou PPL (Parallel Patterns Library) nebo knihovnou asynchronních agentů , pokud s modulem Concurrency Runtime začínáte.

Plánovač úloh plánuje a koordinuje úkoly za běhu. Úkol je jednotka práce, která provádí určitou úlohu. Úloha se obvykle může spouštět paralelně s jinými úlohami. Příkladem úkolů jsou práce prováděné položkami skupiny úloh, paralelními algoritmy a asynchronními agenty.

Plánovač úloh spravuje podrobnosti, které souvisejí s efektivním plánováním úkolů na počítačích s více výpočetními prostředky. Plánovač úloh také používá nejnovější funkce základního operačního systému. Aplikace, které používají Concurrency Runtime, se proto automaticky škálují a zlepšují na hardwaru, který má rozšířené možnosti.

Porovnání s jinými modely souběžnosti popisuje rozdíly mezi mechanismy plánování preemptiv a spolupráce. Plánovač úloh používá kooperativní plánování a algoritmus krádeže práce společně s preemptivním plánovačem operačního systému k dosažení maximálního využití prostředků zpracování.

Modul Concurrency Runtime poskytuje výchozí plánovač, takže nemusíte spravovat podrobnosti o infrastruktuře. Proto obvykle nepoužíváte plánovač úloh přímo. Pokud ale chcete splnit požadavky vaší aplikace na kvalitu, můžete pomocí plánovače úloh poskytnout vlastní zásady plánování nebo přidružit plánovače ke konkrétním úkolům. Předpokládejme například, že máte rutinu paralelního řazení, která se nesrovná nad rámec čtyř procesorů. Pomocí zásad plánovače můžete vytvořit plánovač, který negeneruje více než čtyři souběžné úlohy. Spuštění rutiny řazení v tomto plánovači umožňuje ostatním aktivním plánovačům používat všechny zbývající prostředky zpracování.

Titulek Popis
Instance plánovače Popisuje instance plánovače a způsob jejich správy pomocí concurrency::Scheduler a concurrency::CurrentScheduler tříd. Instance plánovače použijte, pokud chcete přidružit explicitní zásady plánování ke konkrétním typům úloh.
Zásady plánovače Popisuje roli zásad plánovače. Zásady plánovače použijte, když chcete řídit strategii, kterou plánovač používá při správě úkolů.
Skupiny plánů Popisuje roli skupin plánů. Skupiny plánů použijte v případě, že potřebujete vysoký stupeň umístění mezi úkoly, například když skupina souvisejících úkolů těží z provádění na stejném uzlu procesoru.
Prosté úlohy Popisuje roli jednoduchých úloh. Zjednodušené úlohy jsou užitečné, když přizpůsobíte existující kód tak, aby používal funkce plánování modulu Concurrency Runtime.
Kontexty Popisuje roli kontextů, concurrency::wait funkce a concurrency::Context třídy. Tuto funkci použijte, když potřebujete mít kontrolu nad tím, kdy jsou kontexty blokované, odblokované a výnosné nebo kdy chcete ve své aplikaci povolit přesunutí.
Funkce správy paměti Popisuje funkce concurrency::Alloc a concurrency::Free funkce. Tyto funkce mohou zvýšit výkon paměti přidělením a uvolněním paměti souběžným způsobem.
Porovnání s jinými modely souběžnosti Popisuje rozdíly mezi mechanismy plánování preemptiv a spolupráce.
Knihovna PPL (Parallel Patterns Library) Popisuje, jak ve vašich aplikacích používat různé paralelní vzory, například paralelní algoritmy.
Knihovna asynchronních agentů Popisuje, jak ve svých aplikacích používat asynchronní agenty.
Concurrency Runtime Popisuje modul Concurrency Runtime, který zjednodušuje paralelní programování a obsahuje odkazy na související témata.