Sdílet prostřednictvím


Instance plánovače

Tento dokument popisuje roli Plánovač instancí v souběžném běhu a použití concurrency::Scheduler a concurrency::CurrentScheduler k vytvoření a správě Plánovač instance třídy.Plánovač instance jsou užitečné, pokud chcete přidružit explicitní zásady plánování určité typy pracovního vytížení.Můžete například vytvořit jednu instanci služby Plánovač spustit některé úkoly prioritou zvýšenými podprocesu a použít výchozí plánovač spustit podproces s normální prioritou další úkoly.

Tip

Runtime souběžnost poskytuje výchozí Plánovač, a proto není nutné ji vytvořit v aplikaci.Protože služba Plánovač úloh pomáhá optimalizovat výkon aplikací, doporučujeme spuštění se Knihovna PPL (Parallel Patterns Library) nebo Knihovna asynchronních agentů Pokud runtime souběžnosti.

Oddíly

  • Plánovač a třídy CurrentScheduler

  • Vytváření Instance Plánovač

  • Správa životnosti Instance Plánovač

  • Metody a funkce

  • Příklad

Plánovač a třídy CurrentScheduler

Plánovač úloh umožňuje aplikacím používat jeden nebo více Plánovač instance k plánování práce.Concurrency::Scheduler třída představuje instanci služby Plánovač a zapouzdří funkce vztahující se k plánování úkolů.

Podproces, který je připojen k Plánovač je označován jako kontextu spuštění, nebo pouze kontextu.Jeden Plánovač může být kdykoli aktivní v aktuálním kontextu.Aktivní Plánovač je známá také jako aktuální Plánovač.Runtime souběžnosti používá concurrency::CurrentScheduler třídy poskytnout přístup k aktuálním plánovače.Aktuální Plánovač jednoho kontextu se může lišit od aktuálního Plánovač jiného kontextu.Modul runtime neposkytuje úroveň procesu reprezentace aktuální Plánovač.

Obvykle CurrentScheduler třídy slouží k přístupu k aktuální plánovače.Scheduler Třídy je užitečné, pokud potřebujete spravovat Plánovač, který není aktuální.

Následující části popisují, jak vytvořit a spravovat Plánovač instance.Kompletní příklad, který znázorňuje tyto úkoly, viz Postupy: Správa instance plánovače.

Top

Vytváření Instance Plánovač

Existují tyto tři způsoby, jak vytvořit Scheduler objekt:

  • Pokud neexistuje žádný Plánovač, runtime vytvoří výchozí Plánovač můžete při použití funkce runtime, například paralelní algoritmus k práci.Výchozí Plánovač se stane aktuální Plánovač kontextu iniciované paralelní práce.

  • Concurrency::CurrentScheduler::Create metoda vytvoří Scheduler objekt, který používá určité zásady a přidruží tuto Plánovač aktuální kontext.

  • Concurrency::Scheduler::Create metoda vytvoří Scheduler objekt, který používá určité zásady, ale nelze jej spojit s aktuální kontext.

Všechny úkoly souběžných sdílet stejné Plánovač umožňující runtime vytvořit výchozí Plánovač umožňuje.Obvykle funkce poskytované Paralelní knihovnu vzorků (PPL) nebo Asynchronní agenti knihovny se používá k provedení práce paralelní.Proto není třeba pracovat Plánovač řídit jeho zásad nebo životnost.Při použití PPL nebo agenti knihovny runtime vytvoří výchozí Plánovač, pokud neexistuje a usnadňuje aktuální Plánovač pro každý kontext.Při vytváření Plánovač a nastavit jako aktuální Plánovač pak používá tento Plánovač runtime plánovat úlohy.Vytvořte instance dalších Plánovač pouze tehdy, vyžadují specifické zásady plánování.Další informace o zásady, které jsou přidruženy Plánovač viz Zásady plánovače.

Top

Správa životnosti Instance Plánovač

Používá runtime počítání odkazů mechanismus řízení životnosti Scheduler objektů.

Při použití CurrentScheduler::Create metoda nebo Scheduler::Create k vytvoření Scheduler objektu modulu runtime nastaví počáteční referenční počet Plánovač, že jeden.Modul runtime zvýší počet odkazů při volání concurrency::Scheduler::Attach metoda.Scheduler::Attach Metoda associates Scheduler spolu s aktuální kontext objektu.Tím je aktuální plánovače.Při volání CurrentScheduler::Create metoda, vytvoří runtime i Scheduler objektu připojí k aktuální kontext (a nastaví počet odkazů na jeden).Můžete také použít concurrency::Scheduler::Reference zvýšit počet referenční metody Scheduler objektu.

Snížení hodnoty runtime odkazu počítat při volání concurrency::CurrentScheduler::Detach metody odpojit aktuální Plánovač nebo zavolejte concurrency::Scheduler::Release metoda.Nula dosáhne počet odkazů ničí modulu runtime Scheduler objektu po všech naplánováno dokončení úkolů.Spuštěnou úlohu může zvýšit počet odkazů aktuální plánovače.Proto pokud počet odkazů dosáhne nuly a úkol zvýší počet odkazů, modul runtime není zničení Scheduler objektu, dokud počet odkazů znovu dosáhne nuly a dokončit všechny úkoly.

Vnitřní zásobník udržuje runtime Scheduler objektů v každém kontextu.Při volání Scheduler::Attach nebo CurrentScheduler::Create metoda runtime tlačí, Scheduler objektu do zásobníku v aktuálním kontextu.Tím je aktuální plánovače.Při volání CurrentScheduler::Detach, modul runtime POP aktuální Plánovač ze zásobníku pro aktuální kontext a nastaví jako aktuální Plánovač předchozímu.

Běhový modul Správa životnosti Plánovač instance několika způsoby.Následující tabulka uvádí odpovídající metodu, která uvolní nebo odpojí Plánovač z aktuálního kontextu pro každou metodu, která vytvoří nebo připojí k aktuální kontext plánovače.

Vytvořit nebo připojit metoda

Uvolnění nebo odpojit metoda

CurrentScheduler::Create

CurrentScheduler::Detach

Scheduler::Create

Scheduler::Release

Scheduler::Attach

CurrentScheduler::Detach

Scheduler::Reference

Scheduler::Release

Volání nevhodné uvolnit nebo odpojit metoda vytvoří nespecifikované chování v modulu runtime.

Při použití funkce, například PPL, způsobující runtime vytvořit výchozí Plánovač můžete uvolnit nebo odpojit tento Plánovač.Modul runtime spravuje platnosti libovolné Plánovač, který vytvoří.

Protože runtime nelze zničit Scheduler objektu před dokončení všech úkolů, můžete použít concurrency::Scheduler::RegisterShutdownEvent metoda nebo concurrency::CurrentScheduler::RegisterShutdownEvent metoda přijímat oznámení při Scheduler objektu.To je užitečné, když Každá úloha naplánovaná pomocí musí čekat Scheduler objektu na dokončení.

Top

Metody a funkce

Tato část shrnuje důležité metody CurrentScheduler a Scheduler tříd.

Představte si, že CurrentScheduler třídy jako pomocníka pro vytváření Plánovač pro použití v aktuálním kontextu.Scheduler Třídy umožňuje řídit Plánovač, který patří do jiného kontextu.

Následující tabulka zobrazuje důležité metody, které jsou definovány CurrentScheduler třídy.

Metoda

Description

Create

Vytvoří Scheduler objekt, který používá zadané zásady a přidruží jej k aktuálnímu kontextu.

Získat

Ukazatel se získá Scheduler objekt, který je přidružen k aktuálnímu kontextu.Tato metoda nezvýší počet odkaz Scheduler objektu.

Odpojit

Odpojí aktuální Plánovač z aktuálního kontextu a nastaví jako aktuální Plánovač předchozímu.

RegisterShutdownEvent

Registruje událost modulu runtime nastaví při aktuální Plánovač zničen.

CreateScheduleGroup

Vytvoří concurrency::ScheduleGroup objektu v aktuální plánovače.

ScheduleTask

Přidá plánování Fronta plánovače aktuální lehký úkol.

GetPolicy

Získá kopii zásady, která je spojena s aktuální plánovače.

Následující tabulka zobrazuje důležité metody, které jsou definovány Scheduler třídy.

Metoda

Description

Create

Vytvoří Scheduler objekt, který používá zadané zásady.

Připojit

Přidruží Scheduler spolu s aktuální kontext objektu.

Odkaz

Zvyšuje hodnotu čítače odkaz Scheduler objektu.

Verze

Sníží Čítač odkaz Scheduler objektu.

RegisterShutdownEvent

Registruje události, která nastaví modulu runtime, kdy Scheduler objektu.

CreateScheduleGroup

Vytvoří concurrency::ScheduleGroup v objektu Scheduler objektu.

ScheduleTask

Naplánuje lehký úkol z Scheduler objektu.

GetPolicy

Získá kopii zásady, která je přidružena Scheduler objektu.

SetDefaultSchedulerPolicy

Nastaví zásady runtime při vytvoří výchozí plánovače.

ResetDefaultSchedulerPolicy

Obnoví výchozí nastavení zásad, který byl aktivní volání před SetDefaultSchedulerPolicy.Pokud Plánovač výchozí po volání používá runtime Plánovač vytvořit výchozí nastavení zásad.

Top

Příklad

Základní příklady, jak vytvořit a spravovat instance Plánovač viz Postupy: Správa instance plánovače.

Viz také

Úkoly

Postupy: Správa instance plánovače

Koncepty

Plánovač úloh (Concurrency Runtime)

Zásady plánovače

Skupiny plánů