Harmonogram wystąpień
Niniejszy dokument opisuje rolę harmonogram wystąpień Runtime współbieżności i jak używać concurrency::Scheduler i concurrency::CurrentScheduler klasy do tworzenia i zarządzania harmonogram wystąpień.Harmonogram wystąpień są przydatne, gdy chcesz skojarzyć jawne planowania polityki z określonych typów obciążenia pracą.Na przykład można utworzyć jednego wystąpienia harmonogramu niektórych zadań godzinie priorytet wątku z podwyższonym poziomem uprawnień i używać harmonogramu domyślnego dla innych zadań na normalny priorytet wątku.
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 desenie równoległe (PPL) lub Biblioteka agentów asynchroniczne , jeśli jesteś nowym Runtime współbieżności. |
Sekcje
Harmonogram i klasy CurrentScheduler
Tworzenie wystąpienia harmonogramu
Zarządzanie okresu istnienia wystąpienia harmonogramu
Metody i funkcje
Przykład
Harmonogram i klasy CurrentScheduler
Harmonogram zadań umożliwia aplikacjom korzystanie z jednego lub więcej harmonogram wystąpień do planowania pracy.Concurrency::Scheduler klasy reprezentuje wystąpienie harmonogram i hermetyzuje funkcje, które jest związane z planowaniem zadań.
Wątek, który jest dołączony do harmonogramu jest znany jako kontekst wykonywania, lub po prostu kontekst.Jeden harmonogram może być aktywna w bieżącym kontekście w dowolnym momencie.Aktywny harmonogram jest również znany jako bieżący harmonogram.Używa Runtime współbieżności concurrency::CurrentScheduler klasy do zapewnienia dostępu do bieżącego harmonogramu.Bieżący harmonogram dla jednej kontekstu mogą się różnić od bieżącego harmonogramu w innym kontekście.Środowiska wykonawczego nie zapewnia poziomu procesu reprezentacja bieżącego harmonogramu.
Zazwyczaj CurrentScheduler klasa jest używana do dostępu bieżącego harmonogramu.Scheduler Klasy jest przydatne, gdy trzeba zarządzać harmonogram, który nie jest obecny.
Poniżej opisano sposób tworzenia i zarządzania nimi wystąpienie harmonogram.Pełny przykład ilustruje tych zadań, zobacz Jak: Zarządzanie wystąpienie harmonogram.
Top
Tworzenie wystąpienia harmonogramu
Istnieją następujące trzy sposoby tworzenia Scheduler obiekt:
Jeśli harmonogram nie istnieje, środowiska wykonawczego tworzy harmonogram domyślny dla Ciebie, kiedy korzystać z funkcji środowiska wykonawczego, na przykład algorytmu równoległego, wykonywanie pracy.Harmonogram domyślny staje się bieżący harmonogram kontekstu inicjującym równoległych pracy.
Concurrency::CurrentScheduler::Create metoda tworzy Scheduler obiekt, który korzysta z określonych zasad i kojarzy tego harmonogramu z bieżącego kontekstu.
Concurrency::Scheduler::Create metoda tworzy Scheduler obiekt, który używa szczególne zasady, ale nie skojarzyć z bieżącego kontekstu.
Zezwalanie runtime utworzyć harmonogram domyślny umożliwia wszystkie zadania równoczesnych udostępniania samego harmonogramu.Zazwyczaj funkcjonalność, dostarczonego przez Równoległych desenie biblioteki (PPL) lub Asynchronicznego biblioteki agenci jest używana do wykonywania pracy równolegle.W związku z tym nie musisz pracować bezpośrednio z harmonogram kontroli jego zasad lub okres istnienia.Korzystając z PPL lub w bibliotece agentów, środowiska wykonawczego tworzy harmonogram domyślny, jeśli nie istnieje i ułatwia bieżący harmonogram dla każdego kontekstu.Podczas tworzenia harmonogramu i ustawić ją jako bieżący harmonogram, środowisko wykonawcze używa tego harmonogramu na planowanie zadań.Tylko w przypadku, gdy wymagają szczególnych zasad planowania, należy utworzyć dodatkowy harmonogram wystąpień.Aby uzyskać więcej informacji o zasadach, które są skojarzone z harmonogramu, zobacz Harmonogram zasady.
Top
Zarządzanie okresu istnienia wystąpienia harmonogramu
Środowisko wykonawcze używa mechanizmu liczenia odniesienia do kontroli ważności Scheduler obiektów.
Podczas używania CurrentScheduler::Create metody lub Scheduler::Create metodę tworzenia Scheduler obiektu runtime ustawia licznika odwołań początkowej tego harmonogramu.Środowisko wykonawcze zwiększa liczbę odwołań podczas wywołania concurrency::Scheduler::Attach metody.Scheduler::Attach Jednostek stowarzyszonych metoda Scheduler obiektu wraz z bieżącego kontekstu.Dzięki temu bieżącego harmonogramu.Po wywołaniu CurrentScheduler::Create tworzy runtime obie metody, Scheduler obiektu i dołączona do bieżącego kontekstu (i ustawia liczbę odwołań do jednego).Można również użyć concurrency::Scheduler::Reference metoda przyrost wartości licznika odwołań z Scheduler obiektu.
Dekrementuje runtime odniesienia zliczyć po wywołaniu concurrency::CurrentScheduler::Detach metodę, aby odłączyć bieżący harmonogram, lub wywołanie concurrency::Scheduler::Release metody.Gdy licznika odwołań osiągnie zero, niszczy runtime Scheduler obiektu po wszystkich zaplanowanych zadań Zakończ.Uruchomione zadanie może zwiększyć liczbę odwołań bieżącego harmonogramu.W związku z tym, jeśli licznika odwołań osiągnie zero, zadanie zwiększa licznik odniesienia środowiska wykonawczego nie zniszczy Scheduler obiektu aż licznika odwołań ponownie osiągnie zero i Zakończ wszystkie zadania.
Środowisko wykonawcze utrzymuje wewnętrzny stos Scheduler obiektów dla każdego kontekstu.Po wywołaniu Scheduler::Attach lub CurrentScheduler::Create metoda, środowisko wykonawcze wypycha, że Scheduler obiektów na stosie dla bieżącego kontekstu.Dzięki temu bieżącego harmonogramu.Po wywołaniu CurrentScheduler::Detach, środowiska wykonawczego punkty POP bieżącego harmonogramu ze stosu dla bieżącego kontekstu i ustawia poprzedni jako bieżącego harmonogramu.
Środowisko wykonawcze zapewnia kilka sposobów zarządzać okresem istnienia wystąpienia harmonogramu.W poniższej tabeli przedstawiono odpowiednią metodę, która zwalnia lub odłączenie harmonogram z bieżącego kontekstu dla każdej metody, która tworzy lub dołącza bieżący kontekst harmonogramu.
Tworzenie lub dołączanie metody |
Zwolnij lub odłączanie metody |
---|---|
CurrentScheduler::Create |
CurrentScheduler::Detach |
Scheduler::Create |
Scheduler::Release |
Scheduler::Attach |
CurrentScheduler::Detach |
Scheduler::Reference |
Scheduler::Release |
Wywołanie niewłaściwe dopuszczenia lub odłączyć metoda daje nieokreślony zachowanie w czasie wykonywania.
Po użyciu funkcji, na przykład PPL, powodujący runtime utworzyć harmonogram domyślny, można zwolnić lub nie odłączyć ten harmonogram.Środowisko wykonawcze zarządza istnienia jakichkolwiek harmonogramu, która tworzy.
Ponieważ środowisko wykonawcze nie zniszczy Scheduler obiekt przed zakończeniem wszystkich zadań, można użyć concurrency::Scheduler::RegisterShutdownEvent metody lub concurrency::CurrentScheduler::RegisterShutdownEvent metodę, aby otrzymać powiadomienie po Scheduler niszczony jest obiekt.Jest to przydatne, gdy trzeba poczekać każdego zadania zaplanowanego przez Scheduler obiekt, aby zakończyć.
Top
Metody i funkcje
Ta sekcja zawiera podsumowanie ważnych metod CurrentScheduler i Scheduler klasy.
Pomyśl o CurrentScheduler klasy jako pomocnika do tworzenia harmonogramu do użycia w bieżącym kontekście.Scheduler Klasa pozwala kontrolować harmonogramu, która należy do innego kontekstu.
W poniższej tabeli przedstawiono ważne metody, które są definiowane przez CurrentScheduler klasy.
Metoda |
Opis |
---|---|
Tworzy Scheduler obiekt, który używa określonej zasady i kojarzy ją z bieżącego kontekstu. |
|
Pobiera wskaźnik do Scheduler obiekt, który jest skojarzony z bieżącego kontekstu.Ta metoda nie przyrost wartości licznika odwołań z Scheduler obiektu. |
|
Odłącza bieżący harmonogram z bieżącego kontekstu i ustawia poprzedni jako bieżącego harmonogramu. |
|
Rejestruje zdarzenia ustawia środowisko wykonawcze, kiedy niszczony jest bieżący harmonogram. |
|
Tworzy concurrency::ScheduleGroup obiektu w bieżącej harmonogramu. |
|
Dodaje zadanie lekkie do planowania kolejki bieżącego harmonogramu. |
|
Pobiera kopię zasad, który jest skojarzony z bieżącym harmonogramem. |
W poniższej tabeli przedstawiono ważne metody, które są definiowane przez Scheduler klasy.
Metoda |
Opis |
---|---|
Tworzy Scheduler obiekt, który używa określonej zasady. |
|
Kojarzy Scheduler obiektu wraz z bieżącego kontekstu. |
|
Zwiększa licznik odniesienia Scheduler obiektu. |
|
Zmniejsza licznik odniesienia Scheduler obiektu. |
|
Rejestruje zdarzenia ustawia środowisko czasu wykonania, gdy Scheduler niszczony jest obiekt. |
|
Tworzy concurrency::ScheduleGroup obiekt w Scheduler obiektu. |
|
Planuje zadanie lekkie z Scheduler obiektu. |
|
Pobiera kopię zasad, który jest skojarzony z Scheduler obiektu. |
|
Ustawia zasady Runtime podczas tworzy harmonogram domyślny. |
|
Przywraca domyślne zasady do tego, który był aktywny przed wywołaniem SetDefaultSchedulerPolicy.Jeśli tworzony jest harmonogram domyślny, po to wywołanie, środowisko wykonawcze używa domyślnych ustawień zasad do tworzenia harmonogramu. |
Top
Przykład
Podstawowe przykłady tworzenia i zarządzania nimi wystąpienia harmonogramu, zobacz Jak: Zarządzanie wystąpienie harmonogram.
Zobacz też
Zadania
Jak: Zarządzanie wystąpienie harmonogram