Zásady plánovače

 

Nejnovější dokumentaci k sadě Visual Studio 2017 najdete tady.

Tento dokument popisuje úlohu plánovače zásady v modulu Runtime souběžnosti. A zásad Plánovač strategie, kterou Plánovač používá při správě úloh Ovládací prvky. Zvažte například aplikaci, která vyžaduje některé úlohy ke spuštění v THREAD_PRIORITY_NORMAL a dalších úloh ke spuštění na THREAD_PRIORITY_HIGHEST. Můžete vytvořit dvě instance Plánovač: jeden, který určuje, ContextPriority zásad THREAD_PRIORITY_NORMAL a druhý, který určuje stejné zásady jako THREAD_PRIORITY_HIGHEST.

Pomocí plánovače zásady můžete rozdělit prostředky procesoru a přiřadit pevnou sadu prostředků pro každý plánovač. Příkladem paralelního algoritmu, který není adekvátní za čtyři procesory. Můžete vytvořit zásadu Plánovač, která omezuje jeho úkoly souběžně používat více než čtyři procesory.

System_CAPS_ICON_tip.jpg Tip

Concurrency Runtime poskytuje výchozí plánovač. Proto není nutné vytvořit v aplikaci. Vzhledem k tomu, že služba Plánovač úloh umožňuje optimalizovat výkon aplikací, doporučujeme vám začít s Knihovna PPL (Parallel Patterns Library) nebo Knihovna asynchronních agentů Pokud začínáte runtime souběžnosti.

Při použití concurrency::CurrentScheduler::Create, concurrency::Scheduler::Create, nebo concurrency::Scheduler::SetDefaultSchedulerPolicy metoda vytvořit instanci Plánovač zadáte concurrency::SchedulerPolicy objekt, který obsahuje kolekci dvojice klíče a hodnoty, které určují chování plánovače. SchedulerPolicy Konstruktor přijímá proměnný počet argumentů. První argument je počet prvků zásad, které chcete zadat. Zbývající argumenty jsou dvojice klíče a hodnoty pro každý prvek zásad. Následující příklad vytvoří SchedulerPolicy objekt, který určuje tři prvky zásady. Modul runtime používá výchozí hodnoty zásad klíčů, které nejsou určeny.

No code example is currently available or this language may not be supported.

Concurrency::PolicyElementKey výčet definuje zásady klíče, které jsou spojeny s Plánovačem úloh. Následující tabulka popisuje zásady klíče a výchozí hodnotu, která používá modul runtime pro každý z nich.

Klíč zásadDescriptionVýchozí hodnota
SchedulerKindA concurrency::SchedulerType hodnotu, která určuje typ podprocesů, které lze použít k naplánování úlohy.ThreadScheduler(pomocí běžných podprocesů). Toto je jediná platná hodnota tohoto klíče.
MaxConcurrencyunsigned int Hodnota, která určuje maximální počet souběžnosti prostředky, které Plánovač používá.Concurrency::MaxExecutionResources
MinConcurrencyunsigned int Hodnota, která určuje minimální počet souběžnosti prostředky, které Plánovač používá.1
TargetOversubscriptionFactorunsigned int Hodnota, která určuje, kolik podprocesy pro každý prostředek zpracování.1
LocalContextCacheSizeunsigned int Hodnota, která určuje maximální počet kontextů, které mohou být uloženy v mezipaměti v místní frontě každý virtuální procesor.8
ContextStackSizeunsigned int Hodnota, která určuje velikost zásobníku, v kilobajtech, rezervace pro každý kontext.0(použít výchozí velikost zásobníku)
ContextPriorityint Hodnota, která určuje prioritu podprocesu každé kontextu. To může být libovolná hodnota, kterou lze předat SetThreadPriority nebo INHERIT_THREAD_PRIORITY.THREAD_PRIORITY_NORMAL
SchedulingProtocolA concurrency::SchedulingProtocolType hodnota, která určuje plánovací algoritmus použitý.EnhanceScheduleGroupLocality
DynamicProgressFeedbackA concurrency::DynamicProgressFeedbackType hodnota, která určuje, zda má vyrovnání zdrojů podle pokroku na základě statistických informací.

 Poznámka: není tato zásada nastavena na ProgressFeedbackDisabled vzhledem k tomu, že je vyhrazena pro použití v modulu runtime.
ProgressFeedbackEnabled

Každý Plánovač používá své vlastní zásady při jeho plánování úkolů. Zásady, které jsou přidruženy k jedné Plánovač nemá vliv na chování ostatních plánovač. Navíc nelze změnit zásady Plánovač po vytvoření Scheduler objektu.

System_CAPS_ICON_important.jpg Důležité

Určit atributy pro vlákna, modul runtime vytvoří pomocí pouze zásady plánovač. Neměňte příbuznosti podprocesu nebo prioritu podprocesů, které jsou vytvořeny modulem runtime, protože může způsobit nedefinované chování.

Modul runtime vytvoří výchozí plánovač pro vás, pokud nevytvoříte explicitně jeden. Pokud chcete použít výchozí plánovač v aplikaci, ale chcete zadat zásady pro tento plánovač použít, zavolejte concurrency::Scheduler::SetDefaultSchedulerPolicy metoda před plánování paralelní práce. Pokud nezavoláte Scheduler::SetDefaultSchedulerPolicy metody, modul runtime používá zásady výchozí hodnoty z tabulky.

Použití concurrency::CurrentScheduler::GetPolicy a concurrency::Scheduler::GetPolicy metody načíst kopii zásady plánovač. Hodnoty zásad, které obdržíte z těchto metod se mohou lišit od hodnoty zásad, které zadáte při vytvoření plánovače.

Příklad

Přezkoumat příkladů použití určité Plánovač zásady pro řízení chování Plánovač, viz Postupy: Určení specifických zásad plánovače a Postupy: Vytváření agentů využívajících specifické zásady plánovače.

Viz také

Plánovač úloh
Postupy: Určení specifických zásad plánovače
Postupy: Vytváření agentů využívajících specifické zásady plánovače