Udostępnij przez


Grupy harmonogramu

W tym dokumencie opisano rolę grup harmonogramu w środowisku uruchomieniowym współbieżności. Grupa harmonogramu affinitizes lub grupy, powiązane zadania razem. Każdy harmonogram ma co najmniej jedną grupę harmonogramu. Użyj grup harmonogramu, gdy wymagane jest duże lokalne środowisko między zadaniami, na przykład gdy grupa powiązanych zadań korzysta z wykonywania w tym samym węźle procesora. Z drugiej strony należy używać wystąpień harmonogramu, gdy aplikacja ma określone wymagania dotyczące jakości, na przykład gdy chcesz ograniczyć ilość zasobów przetwarzania przydzielonych do zestawu zadań. Aby uzyskać więcej informacji na temat wystąpień harmonogramu, zobacz Wystąpienia usługi Scheduler.

Napiwek

Środowisko uruchomieniowe współbieżności udostępnia domyślny harmonogram, dlatego nie jest wymagane utworzenie go w aplikacji. Ponieważ harmonogram zadań ułatwia dostosowanie wydajności aplikacji, zalecamy rozpoczęcie od biblioteki równoległych wzorców (PPL) lub biblioteki agentów asynchronicznych, jeśli dopiero zaczynasz pracę ze środowiskiem uruchomieniowym współbieżności.

Każdy Scheduler obiekt ma domyślną grupę harmonogramu dla każdego węzła planowania. Węzeł planowania jest mapowy na podstawową topologię systemu. Środowisko uruchomieniowe tworzy jeden węzeł planowania dla każdego pakietu procesora lub węzła Architektury NUMA (Non-Uniform Memory Architecture), w zależności od tego, która liczba jest większa. Jeśli nie skojarzysz jawnie zadania z grupą harmonogramu, harmonogram wybierze grupę, do której ma zostać dodane zadanie.

Zasady SchedulingProtocol harmonogramu mają wpływ na kolejność, w jakiej harmonogram wykonuje zadania w każdej grupie harmonogramu. Gdy SchedulingProtocol jest ustawiona wartość EnhanceScheduleGroupLocality (która jest domyślna), harmonogram zadań wybiera następne zadanie z grupy harmonogramu, nad którą pracuje, gdy bieżące zadanie zakończy lub spółdzielnie daje. Harmonogram zadań wyszukuje bieżącą grupę harmonogramu pracy przed przejściem do następnej dostępnej grupy. Z drugiej strony, gdy SchedulingProtocol jest ustawiona na EnhanceForwardProgresswartość , harmonogram przechodzi do następnej grupy harmonogramu po zakończeniu lub wydajności każdego zadania. Aby zapoznać się z przykładem porównującym te zasady, zobacz Instrukcje: Używanie grup harmonogramu do wywierania wpływu na kolejność wykonywania.

Środowisko uruchomieniowe używa klasy concurrency::ScheduleGroup do reprezentowania grup harmonogramu. Aby utworzyć obiekt, wywołaj metodę ScheduleGroupconcurrency::CurrentScheduler::CreateScheduleGroup lub concurrency::Scheduler::CreateScheduleGroup . Środowisko uruchomieniowe używa mechanizmu zliczania odwołań do kontrolowania okresu istnienia ScheduleGroup obiektów, podobnie jak w przypadku Scheduler obiektów. Podczas tworzenia ScheduleGroup obiektu środowisko uruchomieniowe ustawia licznik odwołania na jeden. Współbieżność ::ScheduleGroup::Reference , metoda zwiększa licznik odwołań o jeden. Współbieżność ::ScheduleGroup::Release , metoda dekrementuje licznik odwołań o jeden.

Wiele typów w środowisku uruchomieniowym współbieżności umożliwia skojarzenie obiektu wraz z grupą harmonogramu. Na przykład klasy concurrency::agent i klasy bloków komunikatów, takie jak concurrency::unbounded_buffer, concurrency::join i concurrency::timer, zapewniają przeciążone wersje konstruktora, które przyjmują ScheduleGroup obiekt. Środowisko uruchomieniowe używa obiektu skojarzonego Scheduler z tym ScheduleGroup obiektem, aby zaplanować zadanie.

Możesz również użyć metody concurrency::ScheduleGroup::ScheduleTask , aby zaplanować uproszczone zadanie. Aby uzyskać więcej informacji na temat lekkich zadań, zobacz Lightweight Tasks (Uproszczone zadania).

Przykład

Aby zapoznać się z przykładem, który używa grup harmonogramu do kontrolowania kolejności wykonywania zadań, zobacz Instrukcje: Używanie grup harmonogramu do wywierania wpływu na kolejność wykonywania.

Zobacz też

Harmonogram zadań
Wystąpienia harmonogramu
Instrukcje: używanie grup harmonogramu do wywierania wpływu na kolejność wykonywania