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.

Ve Visual Studiu 2015 a novější verzi používají třída concurrency::task a související typy v ppltasks.h plánovač fond vláken Windows. 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č.

Návod

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í konkrétní úkol. Ú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 konkurence popisuje rozdíly mezi preemptivním a kooperativním mechanismy plánování. 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 algoritmus paralelního řazení, který se neškáluje 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čů 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 politik 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 časových 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 lehký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 kontrolovat, kdy jsou kontexty blokované, odblokované a uvolněné, nebo když chcete ve své aplikaci povolit přetížení.
Funkce správy paměti Popisuje funkce concurrency::Alloc a concurrency::Free. 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 preemptivními a kooperativními mechanismy plánování.
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.