Sdílet prostřednictvím


Plánovač zásady

Tento dokument popisuje roli Plánovač politik v souběžném běhu.A Plánovač zásad strategie, kterou Plánovač používá při správě úloh Ovládací prvky.Zvažte například aplikaci, která vyžaduje některé úkoly provést v THREAD_PRIORITY_NORMAL a další úkoly provést v 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 se THREAD_PRIORITY_HIGHEST.

Pomocí zásad Plánovač můžete rozdělit prostředky a přiřadit každé Plánovač pevnou sadu zdrojů.Zvažte například paralelní algoritmus, který není měřítko než čtyři procesory.Můžete vytvořit zásady Plánovač, která omezuje jeho úkolů současně používat více než čtyři procesory.

Tip

Runtime souběžnost poskytuje výchozí plánovače.Proto není nutné vytvořit v aplikaci.Protože služba Plánovač úloh pomáhá optimalizovat výkon aplikací, doporučujeme spuštění se Paralelní knihovnu vzorků (PPL) nebo Asynchronní agenti knihovny Pokud runtime souběžnosti.

Při použití concurrency::CurrentScheduler::Create, concurrency::Scheduler::Create, nebo concurrency::Scheduler::SetDefaultSchedulerPolicy metoda vytvořte instanci služby Plánovač poskytnete concurrency::SchedulerPolicy objekt, který obsahuje kolekci dvojic klíčů a hodnot, které určují chování plánovače.SchedulerPolicy Konstruktoru bere proměnný počet argumentů.První argument je počet prvků zásad, které chcete zadat.Zbývající argumenty jsou páry klíč hodnota pro každý prvek zásad.Následující příklad vytvoří SchedulerPolicy objektu, který určuje tři prvky zásad.Běhový modul používá výchozí hodnoty zásad klíčů, které nejsou zadány.

SchedulerPolicy policy(3,       
   MinConcurrency, 2,
   MaxConcurrency, 4,
   ContextPriority, THREAD_PRIORITY_HIGHEST
);

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á runtime pro každý z nich.

Klíč zásad

Description

Výchozí hodnota

SchedulerKind

A concurrency::SchedulerType hodnotu, která určuje typ naplánování úkolů pomocí podprocesů.

ThreadScheduler(použití běžných podprocesů).Toto je jediná platná hodnota tohoto klíče.

MaxConcurrency

unsigned int Hodnotu, která určuje maximální počet prostředků souběžnosti používá plánovače.

CONCURRENCY::MaxExecutionResources

MinConcurrency

unsigned int Hodnotu, která určuje minimální počet prostředků souběžnosti používá plánovače.

1

TargetOversubscriptionFactor

unsigned int Hodnotu, která určuje, kolik podprocesy přidělit každému zdroji zpracování.

1

LocalContextCacheSize

unsigned int Hodnotu, která určuje maximální počet kontextů, které můžete do mezipaměti v místní frontě každý virtuální procesor.

8

ContextStackSize

unsigned int Hodnotu, která určuje velikost zásobníku, v kilobajtech vyhradit pro každý kontext.

0(použít výchozí velikost zásobníku)

ContextPriority

int Hodnotu, která určuje prioritu podprocesu v každém kontextu.To může být libovolná hodnota, který můžete předat Proces SetThreadPriority nebo INHERIT_THREAD_PRIORITY.

THREAD_PRIORITY_NORMAL

SchedulingProtocol

A concurrency::SchedulingProtocolType hodnotu, která určuje algoritmus plánování použít.

EnhanceScheduleGroupLocality

DynamicProgressFeedback

A concurrency::DynamicProgressFeedbackType hodnotu, která určuje, zda má vyrovnání prostředky podle informací o průběhu statistické údaje založeny.

Poznámka: není tato zásada nastavena na ProgressFeedbackDisabled protože je vyhrazena pro použití v modulu runtime.

ProgressFeedbackEnabled

Naplánuje úlohy každý Plánovač používá své vlastní zásady.Zásady, které jsou přidruženy k jedné Plánovač neovlivní chování jiných plánovače.Navíc nelze po vytvoření změnit zásady Plánovač Scheduler objektu.

Důležitá poznámkaDůležité

Použijte pouze zásady Plánovač ovládat atributy pro podprocesy, které vytvoří modulu runtime.Změna příbuznosti podprocesu nebo prioritu podprocesů, které jsou vytvářeny modulu runtime, protože může způsobit nedefinované chování.

Runtime vytvoří výchozí Plánovač pro vás, pokud nevytvoříte explicitně jeden.Pokud chcete použít výchozí Plánovač aplikace, ale chcete určit zásady, že plánovač používat, zavolejte concurrency::Scheduler::SetDefaultSchedulerPolicy metoda před plánování práce na paralelní.Pokud není volání Scheduler::SetDefaultSchedulerPolicy metoda, runtime použití zásad výchozí hodnoty z tabulky.

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

Příklad

Příklady, které Plánovač specifické zásady určují chování Plánovač přezkoumat, viz Jak: zadat specifické zásady Plánovač a Jak: Vytvoření agentů, které používají určité zásady Plánovač.

Viz také

Úkoly

Jak: zadat specifické zásady Plánovač

Jak: Vytvoření agentů, které používají určité zásady Plánovač

Koncepty

Plánovač úloh (souběžnosti Runtime)