Grupy harmonogramu
Niniejszy dokument opisuje rolę harmonogram grupy, w czasie wykonywania współbieżności.A harmonogramu grupy affinitizes lub grup, powiązane ze sobą.Każdy harmonogram ma jedną lub więcej grup harmonogramu.Użyj harmonogramu grupy, gdy na przykład wymagają wysokiego stopnia miejscowości wśród zadań, gdy grupa powiązanych zadań korzystać z wykonywania w tym samym węźle procesora.Odwrotnie przy harmonogram wystąpień aplikacji ma szczególne wymogi jakości, na przykład, aby ograniczyć ilość zasobów przetwarzania, które są przydzielane do zestawu zadań.Aby uzyskać więcej informacji o wystąpieniach harmonogramu, zobacz Wystąpienia harmonogramu.
Porada |
---|
Runtime współbieżności zawiera harmonogram domyślny, a więc nie trzeba utworzyć w aplikacji.Ponieważ Harmonogram zadań umożliwia dostosowywanie wydajności aplikacji, firma Microsoft zaleca uruchamiania z Biblioteka równoległych wzorców (PLL) lub Biblioteka agentów asynchronicznych , jeśli jesteś nowym Runtime współbieżności. |
Każdy Scheduler obiekt ma domyślną grupę harmonogramu dla każdego węzła planowania.A Planowanie węzeł mapy źródłowej topologii systemu.Środowisko wykonawcze tworzy jeden węzeł planowania dla każdego pakietu procesora lub Non-Uniform Memory Architecture (NUMA), niezależnie od liczby jest większy.Jeśli nie zostanie jawnie skojarzony zadania z harmonogramu grupy, harmonogram wybiera dodać zadanie do której grupy.
SchedulingProtocol Harmonogramu zasad wpływa na kolejność, w której przez harmonogram zadań wykonuje zadania w każdej grupie harmonogramu.Gdy SchedulingProtocol jest ustawiona na EnhanceScheduleGroupLocality (co jest ustawieniem domyślnym), harmonogram zadań wybiera następne zadanie z grupy harmonogramu, która działa na bieżące zadanie zakończy się lub wspólnie plonów.Harmonogram zadań przeszukuje bieżącej grupy harmonogramu pracy, zanim przechodzi do następnej grupy dostępne.Odwrotnie, gdy SchedulingProtocol jest ustawiona na EnhanceForwardProgress, harmonogram przechodzi do następnej grupy harmonogramu, po zakończeniu każdego zadania, lub plonów.Na przykład, który porównuje te zasady, zobacz Porady: używanie grup harmonogramu do wywierania wpływu na kolejność wykonywania.
Środowisko wykonawcze używa concurrency::ScheduleGroup klasy harmonogramu grupy.Aby utworzyć ScheduleGroup obiektów, call concurrency::CurrentScheduler::CreateScheduleGroup lub concurrency::Scheduler::CreateScheduleGroup metody.Środowisko wykonawcze używa mechanizmu liczenia odniesienia do kontroli ważności ScheduleGroup obiektów, tak jak robi z Scheduler obiektów.Podczas tworzenia ScheduleGroup obiektu runtime ustawia odniesienia licznika do jednego.Concurrency::ScheduleGroup::Reference metoda zwiększa licznik odniesienia o jeden.Concurrency::ScheduleGroup::Release metoda zmniejsza licznik odniesienia o jeden.
Wiele typów w czasie wykonywania współbieżności pozwalają skojarzyć obiektu wraz z harmonogramu grupy.Na przykład concurrency::agent klasy i komunikat bloku klasy, takie jak concurrency::unbounded_buffer, concurrency::join, i concurrency::timer, zapewniają przeciążony wersje konstruktora, które ScheduleGroup obiektu.Środowisko wykonawcze używa Scheduler obiekt, który jest skojarzony z tym ScheduleGroup obiektu do zaplanowania zadania.
Można również użyć concurrency::ScheduleGroup::ScheduleTask metodę, aby zaplanować zadanie lekkie.Aby uzyskać więcej informacji o zadaniach lekkie, zobacz Zadania lekkie.
Przykład
Na przykład, że używa harmonogramu grupy, aby kontrolować kolejność wykonywania zadań, zobacz Porady: używanie grup harmonogramu do wywierania wpływu na kolejność wykonywania.
Zobacz też
Zadania
Porady: używanie grup harmonogramu do wywierania wpływu na kolejność wykonywania