Harmonogram zasady
Niniejszy dokument opisuje rolę polityki harmonogram w czasie wykonywania współbieżności.A harmonogramu zasad kontroluje strategii, która używa harmonogramu, podczas zarządzania zadaniami.Rozważmy na przykład aplikacja, która wymaga niektóre zadania do wykonania w THREAD_PRIORITY_NORMAL i innych zadań do wykonania w THREAD_PRIORITY_HIGHEST.Można utworzyć dwa wystąpienia harmonogramu: jedną, która określa ContextPriority zasady są THREAD_PRIORITY_NORMAL i innym, który określa te same zasady, być THREAD_PRIORITY_HIGHEST.
Za pomocą harmonogramu zasad, można podzielić przetwarzania dostępnych zasobów i przypisać ustalony zbiór zasobów do każdego harmonogramu.Rozważmy na przykład równoległych algorytm, który nie jest skalowany poza czterema procesorami.Można utworzyć zasadę harmonogramu, która ogranicza swoje zadania, aby użyć nie więcej niż cztery procesory równocześnie.
Porada |
---|
Runtime współbieżności zawiera harmonogram domyślny.Dlatego nie trzeba utworzyć w aplikacji.Ponieważ Harmonogram zadań umożliwia dostosowywanie wydajności aplikacji, firma Microsoft zaleca uruchamiania z Biblioteka desenie równoległe (PPL) lub Biblioteka agentów asynchroniczne , jeśli jesteś nowym Runtime współbieżności. |
Kiedy używać concurrency::CurrentScheduler::Create, concurrency::Scheduler::Create, lub concurrency::Scheduler::SetDefaultSchedulerPolicy metodę, aby utworzyć wystąpienie harmonogram, należy podać concurrency::SchedulerPolicy obiekt, który zawiera kolekcję par klucz wartość, które określają zachowanie harmonogramu.SchedulerPolicy Konstruktor ma zmienną liczbę argumentów.Pierwszy argument jest liczba elementów zasad, które można określić.Pozostałe argumenty są par klucz wartość dla każdego elementu zasad.Poniższy przykład tworzy SchedulerPolicy obiekt, który określa trzy elementy zasad.Środowisko wykonawcze używa wartości domyślnych dla kluczy zasad, które nie zostały określone.
SchedulerPolicy policy(3,
MinConcurrency, 2,
MaxConcurrency, 4,
ContextPriority, THREAD_PRIORITY_HIGHEST
);
Concurrency::PolicyElementKey wyliczenie definiuje klucze zasad, które są skojarzone z harmonogramu zadań.W poniższej tabeli opisano zasady kluczy i wartości domyślnej, którą środowisko wykonawcze używa dla każdego z nich.
Klucz zasad |
Opis |
Wartość domyślna |
---|---|---|
SchedulerKind |
A concurrency::SchedulerType wartość, która określa typ wątków używanych do planowania zadań. |
ThreadScheduler(użyj normalnych wątków).Jest to jedyne prawidłowe wartości dla tego klucza. |
MaxConcurrency |
unsigned int Wartość określającą maksymalną liczbę zasobów współbieżności, których używa harmonogramu. |
|
MinConcurrency |
unsigned int Wartość, która określa minimalną liczbę zasobów współbieżności, które używa harmonogramu. |
1 |
TargetOversubscriptionFactor |
unsigned int Wartość określająca, ile wątki przydzielić do każdego zasobu przetwarzania. |
1 |
LocalContextCacheSize |
unsigned int Wartość określającą maksymalną liczbę kontekstów buforowanych w lokalnej kolejce każdego procesora wirtualnego. |
8 |
ContextStackSize |
unsigned int Wartość, która określa rozmiar stosu, w kilobajtach, aby zarezerwować dla każdego kontekstu. |
0(Użyj domyślnego rozmiaru stosu) |
ContextPriority |
int Wartość, która określa priorytet wątku każdego kontekstu.To może być dowolną wartością, przekazywanego do SetThreadPriority lub INHERIT_THREAD_PRIORITY. |
THREAD_PRIORITY_NORMAL |
SchedulingProtocol |
A concurrency::SchedulingProtocolType wartość, która określa algorytm planowania, aby użyć. |
EnhanceScheduleGroupLocality |
DynamicProgressFeedback |
A concurrency::DynamicProgressFeedbackType wartość, która określa, czy zrównoważenie zasobów zgodnie z informacjami na statystyki postępu. Uwaga ta zasada nie jest ustawiona ProgressFeedbackDisabled , ponieważ jest zarezerwowana do użytku w czasie wykonywania. |
ProgressFeedbackEnabled |
Każdy harmonogram używa własnych zasad podczas jej harmonogramów zadań.Zasady, które są skojarzone z jednym harmonogram nie wpływają na zachowanie innych harmonogramu.Ponadto nie można zmienić zasady harmonogramu, po utworzeniu Scheduler obiektu.
Ważne |
---|
Za pomocą tylko harmonogram zasady kontrolować atrybuty dla wątków, które tworzy środowiska wykonawczego.Nie należy zmieniać koligacji procesorów lub priorytetów wątków, które są tworzone w czasie wykonywania, ponieważ mogłoby niezdefiniowane zachowania. |
Środowiska wykonawczego tworzy harmonogram domyślny dla Ciebie, jeśli nie zostanie jawnie utworzony jeden.Jeśli chcesz użyć harmonogram domyślny w aplikacji, ale chcesz określić zasady dla tego harmonogramu do używania, call concurrency::Scheduler::SetDefaultSchedulerPolicy metody, zanim zaplanowane równoległych pracy.Jeśli nie wywoła Scheduler::SetDefaultSchedulerPolicy metody, zastosowań runtime zasady domyślne wartości z tabeli.
Użyj concurrency::CurrentScheduler::GetPolicy i concurrency::Scheduler::GetPolicy metody do pobrania kopii zasady harmonogramu.Wartości zasad, które z tych metod może różnić się od wartości zasad, które można określić podczas tworzenia harmonogramu.
Przykład
Badanie przykłady używające harmonogram szczególne zasady w celu sterowania zachowaniem harmonogramu, zobacz Jak: określić szczególne zasady harmonogram i Jak: tworzenie czynników, które używają zasad szczególnych harmonogram.
Zobacz też
Zadania
Jak: określić szczególne zasady harmonogram
Jak: tworzenie czynników, które używają zasad szczególnych harmonogram