Zasady harmonogramu

 

Aby uzyskać najnowszą dokumentację programu Visual Studio 2017 RC, zobacz stronę z dokumentacją tego programu.

W tym dokumencie opisano rolę polityk harmonogram w czasie wykonywania współbieżności. A zasad harmonogram steruje strategii, używany w harmonogramie podczas zarządzania zadaniami. Rozważmy na przykład aplikacja, która wymaga niektórych zadań 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 oraz inne, które określa się takie same zasady THREAD_PRIORITY_HIGHEST.

Za pomocą harmonogramu zasad, można podzielić przetwarzania dostępnych zasobów i przypisać każdy harmonogram ustalony zbiór zasobów. Rozważmy na przykład równoległych algorytmu, który nie jest skalowany poza cztery procesory. Można utworzyć zasadę harmonogram, który ogranicza jego zadań jednocześnie używać nie więcej niż cztery procesory.

System_CAPS_ICON_tip.jpg Porada

Współbieżność środowiska wykonawczego zawiera harmonogram domyślny. W związku z tym nie musisz utworzyć w aplikacji. Ponieważ Harmonogram zadań ułatwia dostosowanie wydajności aplikacji, firma Microsoft zaleca uruchamiania z Biblioteka równoległych wzorców (PLL) lub Biblioteki agentów asynchronicznych Jeśli jesteś nowym użytkownikiem w czasie wykonywania współbieżności.

Użycie concurrency::CurrentScheduler::Create, concurrency::Scheduler::Create, lub concurrency::Scheduler::SetDefaultSchedulerPolicy metoda tworzenia wystąpienia harmonogramu, podać concurrency::SchedulerPolicy obiekt, który zawiera zbiór 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 masz zamiar 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 są określone.

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

Concurrency::PolicyElementKey definiuje wyliczenie kluczy zasad, które są skojarzone z harmonogramu zadań. W poniższej tabeli opisano zasady kluczy i domyślną wartość, która używa środowisko wykonawcze dla każdego z nich.

Klucz zasadOpisWartość domyślna
SchedulerKindA 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.
MaxConcurrencyunsigned int Wartość, która określa maksymalną liczbę zasobów współbieżności, które używa harmonogramu.CONCURRENCY::MaxExecutionResources
MinConcurrencyunsigned int Wartość, która określa minimalną liczbę zasobów współbieżności, które używa harmonogramu.1
TargetOversubscriptionFactorunsigned int Wartość, która określa, jak wiele wątków przydzielić do każdego zasobu przetwarzania.1
LocalContextCacheSizeunsigned int Wartość, która określa maksymalną liczbę kontekstów, które mogą być buforowane w lokalnej kolejce każdego procesora wirtualnego.8
ContextStackSizeunsigned int Wartość, która określa rozmiar stosu, w kilobajtach, aby zarezerwować dla każdego kontekstu.0(Użyj domyślnego rozmiaru stosu)
ContextPriorityint Wartość, która określa priorytet wątku każdego kontekstu. To może być dowolną wartością, który może zostać przekazany do wykonanie funkcji SetThreadPriority lub INHERIT_THREAD_PRIORITY.THREAD_PRIORITY_NORMAL
SchedulingProtocolA concurrency::SchedulingProtocolType wartość, która określa algorytm planowania ma być używany.EnhanceScheduleGroupLocality
DynamicProgressFeedbackA concurrency::DynamicProgressFeedbackType wartość, która określa, czy do zrównoważenia zasobów według informacji o postępie opartych na statystyki.

 Uwaga ta zasada nie jest ustawiona ProgressFeedbackDisabled ponieważ jest zarezerwowana do użytku w czasie wykonywania.
ProgressFeedbackEnabled

Każdy harmonogram używa własnej polityki, gdy planuje ona zadania. Zasady, które są skojarzone z jednym harmonogram nie wpływają na zachowanie innych harmonogramu. Ponadto, nie można zmienić zasady harmonogram po utworzeniu Scheduler obiektu.

System_CAPS_ICON_important.jpg Ważne

Tylko harmonogram zasady umożliwiają sterowanie atrybutów dla wątków, które tworzy środowisko czasu wykonania. Nie należy zmieniać koligacji wątku lub priorytetu wątków, które są tworzone w czasie wykonywania, ponieważ, które mogą spowodować niezdefiniowane zachowanie.

Środowisko wykonawcze tworzy harmonogram domyślny dla Ciebie, jeśli nie jawnie utworzyć jeden. Jeśli chcesz użyć domyślnego harmonogramu w aplikacji, ale chcesz określić zasady dla tego harmonogramu do używania, wywołanie concurrency::Scheduler::SetDefaultSchedulerPolicy metoda zanim zaplanowane równoległą pracę. Jeśli nie zostanie wywołana Scheduler::SetDefaultSchedulerPolicy metodę, do zastosowań runtime zasady domyślne wartości z tabeli.

Użycie concurrency::CurrentScheduler::GetPolicy i concurrency::Scheduler::GetPolicy metod, aby pobrać kopię zasad harmonogramu. Wartości zasad, które otrzymujesz z tych metod mogą się różnić od wartości zasad, które można określić podczas tworzenia harmonogramu.

Przykład

Aby zbadać przykładów, które używają zasad szczególnych harmonogram w celu sterowania zachowaniem harmonogramu, zobacz Porady: określanie specjalnych zasad harmonogramu i Porady: tworzenie agentów korzystających ze specjalnych zasad harmonogramu.

Zobacz też

Harmonogram zadań
Porady: określanie specjalnych zasad harmonogramu
Porady: tworzenie agentów korzystających ze specjalnych zasad harmonogramu