concurrency — Przestrzeń nazwy
Przestrzeń nazw Concurrency zawiera klasy i funkcje, które umożliwiają dostęp do środowiska wykonawczego Concurrency, platformy programowania współbieżnego dla C++.Aby uzyskać więcej informacji, zobacz Współbieżność środowiska wykonawczego.
namespace concurrency;
Elementy członkowskie
Przestrzenie nazw
Nazwa |
Opis |
---|---|
concurrency::extensibility Namespace |
Typedefs
Nazwa |
Opis |
---|---|
runtime_object_identity |
Każde wystąpienie wiadomości ma tożsamość, która podąża za nim podczas klonowania i jest przekazywana pomiędzy składnikami obsługi wiadomości.To nie może być adres obiektu wiadomości. |
task_status |
Typ, który reprezentuje stan końcowy zadania.Prawidłowe wartości to completed i canceled. |
TaskProc |
Podstawowa abstrakcja dla zadania, zdefiniowana jako void (__cdecl * TaskProc)(void *).TaskProc jest używany do wywołania ciała zadania. |
TaskProc_t |
Podstawowa abstrakcja dla zadania, zdefiniowana jako void (__cdecl * TaskProc_t)(void *).TaskProc jest używany do wywołania ciała zadania. |
Klasy
Nazwa |
Opis |
---|---|
Klasa affinity_partitioner jest podobna do klasy static_partitioner, ale poprawia koligację pamięci podręcznej przez mapowanie podzakresów na wątki robocze.To znacznie zwiększa wydajność, gdy pętla zostanie ponownie wykonana przez ten sam zestaw danych a dane wpisane są w pamięci podręcznej.Należy zauważyć, że ten sam obiekt affinity_partitioner musi być użyty podczas kolejnych iteracji równoległej pętli, która jest wykonywana na określonym zestawie danych, aby czerpać korzyści z danych lokalnych. |
|
Klasa przeznaczona do stosowania jako klasa podstawowa dla wszystkich agentów niezależnych.Służy do ukrycia stanu innych agentów i interakcji za pomocą przekazywania wiadomości. |
|
Klasa auto_partitioner reprezentuje domyślne metody parallel_for, parallel_for_each i parallel_transform używane do podziału zakresu przez który ta klasa iteruje.Ta metoda partycjonowania zakresu pracowników opiera się na zrównoważeniu obciążenia jak i na anulowaniu per iteracja. |
|
Ta klasa opisuje wyjątek wyrzucany, gdy do bloku obsługi wiadomości został podany wskaźnik na element docelowy, który jest nieprawidłowy dla wykonywanej operacji. |
|
Blok obsługi wiadomości call to blok o wielu elementach źródłowych, uporządkowany target_block, który wywołuje określoną funkcję podczas odbierania wiadomości. |
|
Klasa cancellation_token reprezentuje zdolność do określenia, czy zażądano anulowania pewnej operacji.Dany token może być skojarzony z task_group, structured_task_group, lub task, aby zapewnić anulowanie niejawne.Również może być sondowany o wykreślenie lub wywołanie zwrotne zarejestrowane dla, jeśli i gdy powiazany cancellation_token_source został anulowany. |
|
Klasa cancellation_token_registration reprezentuje powiadomienie o wywołaniu zwrotnym od obiektu cancellation_token.Gdy metoda register w cancellation_token umożliwia otrzymywanie powiadomień o czasie wystąpienia anulowania, obiekt cancellation_token_registration jest zwracany jako uchwyt do funkcji zwrotnej. Dzięki temu obiekt wywołujący może żądać, aby konkretne wywołanie zwrotne nie było już dokonywane za pomocą metody deregister. |
|
Klasa cancellation_token_source reprezentuje zdolność do anulowania pewnej operacji możliwej do anulowania. |
|
Blok obsługi wiadomości choice to blok o wielu elementach źródłowych i pojedynczym docelowym, który reprezentuje interakcję przepływu kontroli ze zbiorem źródeł.Block choice będzie czekał na dowolny z wielu źródeł, aż ten wyprodukuje wiadomość a następnie wypropaguje indeks źródła, które wyprodukowało wiadomość. |
|
Obiekt combinable<T> jest przeznaczony do dostarczenia prywatnych w ramach wątku, kopii danych, w celu wykonania wolnych od blokad lokalnych obliczeń pomocniczych w wątku podczas algorytmów równoległych.Na końcu operacji równoległej, obliczenia pomocnicze mogą zostać scalone w wynik końcowy.Klasa może zostać użyta zamiast współdzielonej zmiennej i może przynieść efekt w ulepszeniu wydajności, w przypadku gdyby występowały częste rywalizacje o współdzieloną zmienną. |
|
Klasa concurrent_priority_queue jest kontenerem, który pozwala wielu wątkom na współbieżne wrzucanie i ściąganie elementów z kolejki.Elementy są umieszczane w kolejce według priorytetów określonych przez funktor dostarczony jako argument szablonu. |
|
Klasa concurrent_queue to kontener sekwencyjny, który pozwala na dostęp do elementów według zasady: pierwsze przyszło, pierwsze wyszło.Umożliwia ograniczony zestaw bezpiecznych współbieżnych operacji, takich jak push i try_pop. |
|
Klasa concurrent_unordered_map jest bezpiecznym pod kątem współbieżności kontenerem, który kontroluje różnej długości sekwencje elementów typu std::pair<const _Key_type, _Element_type>.Sekwencja jest reprezentowana w sposób umożliwiający bezpieczne pod względem współbieżności wykonanie operacji dołączenia, uzyskania dostępu do elementu, uzyskania dostępu do iteratora i przejścia przez iterator. |
|
Klasa concurrent_unordered_multimap jest bezpiecznym pod kątem współbieżności kontenerem, który kontroluje różnej długości sekwencje elementów typu std::pair<const _Key_type, _Element_type>.Sekwencja jest reprezentowana w sposób umożliwiający bezpieczne pod względem współbieżności wykonanie operacji dołączenia, uzyskanie dostępu do elementu, uzyskanie dostępu do iteratora i przejście przez iterator. |
|
Klasa concurrent_unordered_multiset jest bezpiecznym pod kątem współbieżności kontenerem, który kontroluje różnej długości sekwencje elementów typu _Key_type.Sekwencja jest reprezentowana w sposób umożliwiający bezpieczne pod względem współbieżności wykonanie operacji dołączenia, uzyskanie dostępu do elementu, uzyskanie dostępu do iteratora i przejście przez iterator. |
|
Klasa concurrent_unordered_set jest bezpiecznym pod kątem współbieżności kontenerem, który kontroluje różnej długości sekwencje elementów typu _Key_type.Sekwencja jest reprezentowana w sposób umożliwiający bezpieczne pod względem współbieżności wykonanie operacji dołączenia, uzyskanie dostępu do elementu, uzyskanie dostępu do iteratora i przejście przez iterator. |
|
Klasa concurrent_vector jest sekwencyjnym kontenerem, który pozwala na losowy dostęp do dowolnego elementu.Umożliwia ona bezpieczne pod kątem współbieżności wykonanie operacji dołączenia, uzyskania dostępu do elementu, uzyskania dostępu do iteratora i przejście przez iterator. |
|
Reprezentuje klasą abstrakcyjną dla kontekstu wykonywania. |
|
Ta klasa opisuje wyjątek wyrzucany gdy metoda Unblock obiektu Context jest wywoływana z tego samego kontekstu.Oznaczało by to próbę odblokowania danego kontekstu przez siebie samego. |
|
Ta klasa opisuje wyjątek wyrzucany, gdy metody Block i Unblock obiektu Context nie są poprawnie skojarzone. |
|
Mutex nie obsługujący współużytkowania, który zna jawnie środowisko uruchomieniowe współbieżności. |
|
Reprezentuje abstrakcję dla bieżącego Harmonogramu zadań skojarzonego z kontekstem wywołującym. |
|
Ta klasa opisuje wyjątek wyrzucany, gdy metoda Scheduler::SetDefaultSchedulerPolicy jest wywoływana gdy istnieje już domyślny harmonogram zadań dla tego procesu. |
|
Zdarzenie resetowania ręcznego, które jest jawnie świadome współbieżności środowiska uruchomieniowego. |
|
Ta klasa opisuje wyjątek wyrzucany gdy blokada jest zakładana w sposób niepoprawny. |
|
Ta klasa opisuje wyjątek wyrzucany gdy metoda Attach jest wywoływana na obiekcie Scheduler, który jest już dołączony do bieżącego kontekstu. |
|
Ta klasa opisuje wyjątek wyrzucany gdy metoda CurrentScheduler::Detach jest wywoływana w kontekście, który nie został dołączony do żadnego harmonogramu za pomocą metody Attach obiektu Scheduler. |
|
Ta klasa opisuje wyjątek gdy metoda Reference jest wywoływana na obiekcie Scheduler, który jest zamykany, z kontekstu, który nie jest częścią tego harmonogramu. |
|
Ta klasa opisuje wyjątek wyrzucany gdy metoda link_target bloku obsługi wiadomości jest wywoływana a blok obsługi wiadomości nie może połączyć się z obiektem docelowym.Może to być wynikiem przekroczenia limitu połączeń bloku obsługi wiadomości, lub gdy wykonywana jest próba połączenia określonego elementu docelowego dwukrotnie do tego samego elementu źródłowego. |
|
Ta klasa opisuje wyjątek wyrzucany gdy obiekt task_handle jest zaplanowany do wykonania wiele razy przy użyciu metody run obiektu task_group lub structured_task_group bez wywołania metody wait lub run_and_wait. |
|
Ta klasa opisuje wyjątek generowany, gdy jest wykonywana nieprawidłowa operacja, która jest dokładniej opisana przez inny typ wyjątku generowanego przez środowisko uruchomieniowe współbieżności. |
|
Ta klasa opisuje wyjątek wyrzucany gdy metoda Context::Oversubscribe wywoływana jest z parametrem _BeginOversubscription ustawionym na false bez uprzedniego wywołania metody Context::Oversubscribe z parametrem _BeginOversubscription ustawionym na true. |
|
Ta klasa opisuje wyjątek wyrzucany podczas gdy przekazywany jest nieprawidłowy lub nieznany klucz do konstruktora obiektu SchedulerPolicy lub metoda SetPolicyValue obiektu SchedulerPolicy przekazuje klucz, który musi zostać zmieniony za pomocą innych środków, takich jak metoda SetConcurrencyLimits. |
|
Ta klasa opisuje wyjątek wyrzucany gdy próbuje się zmienić ograniczenia współbieżności obiektu SchedulerPolicy w taki sposób, że wartość klucza MinConcurrency jest mniejsza niż wartość klucza MaxConcurrency. |
|
Ta klasa opisuje wyjątek wyrzucany, gdy klucz zasad obiektu SchedulerPolicy ma nieprawidłową wartość dla tego klucza. |
|
Klasa ISource to interfejs dla wszystkich bloków źródłowych.Bloki źródłowe propagują wiadomości do bloków ITarget. |
|
Klasa ITarget to interfejs dla wszystkich bloków docelowych.Bloki docelowe konsumują wiadomości dostarczane im przez bloki ISource. |
|
Blok wiadomości typu join jest pojedynczym elementem docelowym o wielu źródłach, uporządkowanym propagator_block który łączy ze sobą wiadomości typu _Type z każdego z jego źródeł. |
|
Abstrakcja fizycznej lokalizacji na sprzęcie. |
|
Podstawowa koperta wiadomości zawierająca ładunek danych przekazywany między blokami wiadomości. |
|
Ta klasa opisuje wyjątek wyrzucany gdy blok wiadomości nie jest w stanie odnaleźć żądanej wiadomości. |
|
Klasa message_processor to podstawowa abstrakcyjna klasa do przetwarzania obiektów message.Nie ma żadnej gwarancji uporządkowania wiadomości. |
|
Ta klasa opisuje wyjątek, wyrzucany gdy istnieją jeszcze zaplanowane zadania obiektu task_group lub structured_task_group w czasie, gdy wykonywany jest destruktor obiektu.Wyjątek ten nigdy nie zostanie wyrzucony gdy destruktor zostanie osiągnięty z powodu odwrócenia stosu jako wynik wyjątku. |
|
Obiekt multi_link_registry to network_link_registry, który zarządza wieloma blokami źródłowymi lub wieloma blokami docelowymi. |
|
Blok obsługi wiadomości multitype_join to blok o wielu źródłach i jednym elemencie docelowym, który łączy wiadomości wielu typów z każdego ze źródeł i zwraca krotkę połączonych wiadomości. |
|
Ta klasa opisuje wyjątek wyrzucany gdy środowisko uruchomieniowe współbieżności wykryło, że zaniedbano wywołanie metody CurrentScheduler::Detach w kontekście dołączonego do drugiego harmonogramu zadań przy użyciu metody Attach obiektu Scheduler. |
|
Abstrakcyjna klasa bazowa network_link_registry zarządza połączeniami pomiędzy blokami źródłowymi a docelowymi. |
|
Ta klasa opisuje wyjątek wyrzucany gdy upłynął limit czasu operacji. |
|
Klasa ordered_message_processor to message_processor umożliwiający blokom obsługi wiadomości przetwarzanie wiadomości w kolejności w której zostały odebrane. |
|
Blok obsługi wiadomości overwrite_buffer to blok o wielu elementach docelowych i źródłowych, uporządkowany propagator_block, który może przechowywać jedną wiadomość naraz.Nowe wiadomości zastępują poprzednio posiadane. |
|
Klasa reportera postępu pozwala na zgłaszanie powiadomień o postępie określonego typu.Każdy obiekt progress_reporter jest powiązany z określoną akcją lub operacją asynchroniczną. |
|
Klasa propagator_block to abstrakcyjna klasa bazowa dla bloków wiadomości, które są zarówno elementami źródłowymi i docelowymi.Łączy w sobie funkcje klas source_block i target_block. |
|
Blokada odczytu i zapisu, preferująca moduł zapisujący, oparta na kolejce, obracająca tylko lokalnie.Blokada przyznaje dostęp pierwszy przyszedł - pierwszy wyszedł (FIFO) do modułów zapisujących i blokuje moduły czytające ciągłym obciążeniem modułów zapisujących. |
|
Reprezentuje klasą abstrakcyjną dla grupy harmonogramów.Harmonogram grup organizuje zestaw powiązanych prac, które mają korzyści z tego, że są czasowo zaplanowane blisko siebie, przez wykonywanie innego zadania w tej samej grupie przed przeniesieniem do innej grupy lub przestrzennie, wykonując wiele elementów w tej samej grupie na tym samym węźle NUMA lub fizycznym gnieździe. |
|
Reprezentuje abstrakcję dla harmonogramu środowiska uruchomieniowego współbieżności. |
|
Ta klasa opisuje wyjątek, wyrzucany, gdy operacja jest wykonywana i wymaga to od harmonogramu podłączenia do bieżącego kontekstu, a harmonogram nie jest do niego podłączony. |
|
Ta klasa opisuje wyjątek wyrzucany z powodu niepowodzenia uzyskania dostępu do krytycznego zasobu w środowisku uruchomieniowym współbieżności. |
|
Ta klasa opisuje wyjątek wyrzucany z powodu niepowodzenia utworzenia roboczego kontekstu wykonania w środowisku uruchomieniowym współbieżności. |
|
SchedulerPolicy klasa zawiera zestaw pary klucz/wartość, jedną dla każdego elementu zasad, które kontrolują zachowanie wystąpienia harmonogramu. |
|
Klasa simple_partitioner reprezentuje statyczne partycjonowanie zakresu iterowanego przez parallel_for.Partycjoner dzieli zakres na kawałki, takie, że każdy kawałek ma co najmniej tyle iteracji, co wartość określona przez rozmiar kawałka. |
|
Blok obsługi wiadomości single_assignment to blok o wielu elementach docelowych i źródłowych, uporządkowany propagator_block który może przechowywać pojedynczą message jednokrotnego zapisu. |
|
Obiekt single_link_registry to network_link_registry który zarządza tylko blokami z jednym elementem źródłowym lub docelowym. |
|
Klasa source_block to abstrakcyjna klasa bazowa dla bloków źródłowych.Klasa dostarcza podstawową funkcjonalność zarządzania połączeniem jak również sprawdzanie popularnych błędów. |
|
Obiekt source_link_manager zarządza połączeniami sieciowymi bloków obsługi wiadomości do bloków ISource. |
|
Klasa static_partitioner reprezentuje statyczne partycjonowanie zakresu iterowanego przez parallel_for.Partycjoner dzieli zakres na tak wiele kawałków ile jest dostępnych modułów roboczych w odpowiadającym harmonogramie. |
|
Klasa structured_task_group reprezentuje wysoce uporządkowaną kolekcję równoległej pracy.Można kolejkować poszczególne zadania równoległe do structured_task_group za pomocą obiektów task_handle i poczekać do ukończenia lub anulować grupę zadań przed zakończeniem jej wykonywania, co spowoduje przerwanie wszystkich zadań, które się jeszcze nie rozpoczęły. |
|
Klasa target_block to abstrakcyjna klasa bazowa, która zapewnia podstawową funkcjonalność zarządzania łączem i sprawdzenia błędów tylko dla bloków docelowych. |
|
Klasa task biblioteki równoległych wzorców (PPL, Parallel Patterns Library).Obiekt task reprezentuje pracę, która może być wykonywana asynchronicznie, i równocześnie z innymi zadaniami i pracami równoległymi produkowanymi przez algorytmy równoległe we współbieżnym środowisku wykonawczym.Daje wynik o typie _ResultType po pomyślnym zakończeniu.Zadania typu task<void> nie generują żadnego wyniku.Zadanie można wstrzymywać i anulować niezależnie od innych zadań.To może również składać się z innych zadań za pomocą kontynuacji (then) i sprzężenia (when_all) i wyboru (when_any) szablonów. |
|
Ta klasa opisuje wyjątek generowany przez warstwę zadań PPL, aby wymusić anulowanie bieżącego zadania.Jest to również generowane przez get() metody zadanie, dla anulowanych zadań. |
|
Klasa task_completion_event umożliwia opóźnienie wykonania zadania, dopóki nie zostanie spełniony jakiś warunek, lub uruchomienie zadania w odpowiedzi na zdarzenie zewnętrzne. |
|
Klasa task_continuation_context umożliwia określenie, gdzie ma zostać wykonana kontynuacja.Użyteczne jest tylko używanie tej klasy z aplikacji do Sklepu Windows.Dla aplikacji spoza Sklepu Windows kontekst wykonywania kontynuacji zadania jest ustalony w czasie wykonywania i nie można go konfigurować. |
|
Klasa task_group reprezentuje kolekcję równoległej pracy, na którą można czekać, aż się wykona lub anulować. |
|
Klasa task_handle reprezentuje pojedynczy równoległy element roboczy.Hermetyzuje on instrukcje i dane wymagane do wykonania danej pracy. |
|
Reprezentuje dozwolone opcje tworzenia zadania |
|
Blok obsługi wiadomości timer to blok o jednym elemencie docelowym source_block zdolnym do wysyłania wiadomości do swojego elementu docelowego po określonym czasie lub w określonych odstępach czasu. |
|
Blok obsługi wiadomości transformer to blok obsługi wiadomości o jednym elemencie źródłowym i wielu elementach docelowych, uporządkowany propagator_block, który może akceptować wiadomości jednego typu i jest zdolny do przechowywania nieograniczonej liczby wiadomości różnych typów. |
|
Blok obsługi wiadomości unbounded_buffer to blok obsługi wiadomości o wielu elementach docelowych i źródłowych, uporządkowany propagator_block, który może przechowywać nieograniczonej liczby wiadomości. |
|
Ta klasa zawiera opis wyrzucanego wyjątku, gdy jest używany nieobsługiwany system operacyjny. |
Struktury
Nazwa |
Opis |
---|---|
Struktura DispatchState jest używana do przenoszenia stanu do metody IExecutionContext::Dispatch.Opisuje okoliczności, w jakich metoda Dispatch jest wywoływana na interfejsie IExecutionContext. |
|
Interfejs kontekstu wykonania, który może być uruchamiany na podanym procesorze wirtualnym i być zmieniany jednocześnie z innym kontekstem. |
|
Abstrakcja sprzętu wątku. |
|
Interfejs do Menedżera zasobów środowiska uruchomieniowego współbieżności.Jest to interfejs, za pomocą którego harmonogramy komunikują się z Menedżerem zasobów. |
|
Interfejs do abstrakcji harmonogramu pracy.Menedżer zasobów środowiska uruchomieniowego współbieżności używa tego interfejsu do komunikowania się z harmonogramem pracy. |
|
Interfejs, za pomocą którego harmonogramy komunikują się z Menedżerem zasobów środowiska uruchomieniowego współbieżności do negocjowania alokacji zasobów. |
|
Abstrakcja dla wątku wykonywania.W zależności od klucza zasad SchedulerType utworzonego harmonogramu, Menedżer zasobów przyzna proxy wątku, które jest wspierane przez normalny wątek Win32 lub możliwy do użycia w harmonogramie wątek w trybie użytkownika (UMS).Wątki UMS są obsługiwane w 64-bitowych systemach operacyjnych z wersją systemu Windows 7 lub nowszą. |
|
Interfejs do zasobu wykonania określonego przez Menedżera zasobów. |
|
Interfejs do węzła topologii, określonego przez Menedżera zasobów.Węzeł zawiera jeden lub więcej zasobów wykonania. |
|
Reprezentuje listę ukończenia UMS.Gdy wątek UMS jest zablokowany, kontekst harmonogramu, wybrany przez harmonogram jest delegowany do podjęcia decyzji co należy zaplanować w odpowiadającym katalogu głównym procesora wirtualnego, podczas gdy oryginalny wątek jest zablokowany.Gdy oryginalny wątek odblokuje się, system operacyjny kolejkuje go do listy ukończenia, która jest dostępna przez ten interfejs.Harmonogram może odpytać listę ukończenia na wybranym kontekście harmonogramu lub w dowolnym innym miejscu w którym szuka pracy. |
|
Interfejs do abstrakcji harmonogramu pracy, który chce by Menedżer zasobów środowiska uruchomieniowego aplikacji doręczył wątki UMS.Menedżer zasobów używa tego interfejsu do komunikowania się z harmonogramami wątków UMS.Interfejs IUMSScheduler dziedziczy z interfejsu IScheduler. |
|
Abstrakcja dla wątku wykonywania.Jeśli chcesz, aby Twój harmonogram miał przyznane wątki UMS, ustaw wartość elementu zasad harmonogramu SchedulerKind na UmsThreadDefaulti zaimplementuj interfejs IUMSScheduler.Wątki UMS są obsługiwane tylko w 64-bitowych systemach operacyjnych z wersją systemu Windows 7 lub nowszą. |
|
Reprezentuje powiadomienia Menedżera zasobów, że proxy wątku zostało zablokowane i została odblokowana możliwość powrotu do wyznaczonego kontekstu harmonogramu, który jest gotowy do zaplanowania.Ten interfejs jest nieprawidłowy, gdy proxy wątku powiązane z kontekstem wykonania, zwrócone z metody GetContext zostaje ponownie zaplanowane. |
|
Abstrakcja dla wątku sprzętu, na którym proxy wątku może się wykonać. |
|
Interfejs harmonogramu |
|
Struktura scheduler_ptr (współbieżność środowiska wykonawczego) |
Reprezentuje wskaźnik do harmonogramu.Ta klasa istnieje, aby zezwalać na specyfikację wspólnego okresu istnienia przy użyciu wskaźnika shared_ptr lub zwykłe odwołanie za pomocą wskaźnika raw. |
Wyliczenia
Nazwa |
Opis |
---|---|
Prawidłowe stany agent. |
|
Typy zdarzeń, które mogą być śledzone za pomocą funkcji śledzenia oferowanych przez biblioteki agentów |
|
Typy zdarzeń, które mogą być śledzone za pomocą funkcji śledzenia oferowanych przez środowisko uruchomieniowe współbieżności. |
|
Flagi śledzenia typów zdarzeń |
|
Typ krytycznego regionu w którym znajduje się kontekst. |
|
Używane przez zasady DynamicProgressFeedback w celu opisania, czy zasoby dla harmonogramu zostaną zrównoważone według informacji statystycznych zebranych z harmonogramu, czy tylko na podstawie procesorów wirtualnych wchodzących i wychodzących ze stanu bezczynności przez wywołania metody Activate i Deactivate interfejsu IVirtualProcessorRoot.Aby uzyskać więcej informacji na temat dostępnych polityk harmonogramu, zobacz PolicyElementKey — Wyliczenie. |
|
Typ bloku obsługi wiadomości join. |
|
Prawidłowe odpowiedzi na ofertę obiektu message do bloku. |
|
Klucze zasad opisują aspekty zachowania harmonogramu.Każdy element zasad jest opisany przez parę klucz wartość.Aby uzyskać więcej informacji dotyczących zasad harmonogramu i ich wpływu na harmonogram, zobacz Harmonogram zadań (współbieżność środowiska wykonawczego). |
|
Używane przez zasady SchedulerKind w celu opisania typów wątków, które harmonogram powinien wykorzystać dla odpowiedniego kontekstu wykonania.Aby uzyskać więcej informacji na temat dostępnych polityk harmonogramu, zobacz PolicyElementKey — Wyliczenie. |
|
Używane przez zasady SchedulingProtocol w celu opisania który algorytm planowania będzie wykorzystany przez harmonogram.Aby uzyskać więcej informacji na temat dostępnych polityk harmonogramu, zobacz PolicyElementKey — Wyliczenie. |
|
Wykorzystywany w celu określenia stanu, w jakim jest proxy wątku, kiedy jest wykonywane jednoczesne przełączanie kontekstu na inny wątek proxy. |
|
Opisuje stan wykonania obiektu task_group lub structured_task_group.Wiele metod czekających na zakończenie zadań zaplanowanych do grupy zadań, zwraca wartość tego typu. |
|
Używane przez WinRTInitialization zasady do opisywania, czy i w jaki sposób Środowisko wykonawcze systemu Windows będzie zainicjowane na wątki harmonogram dla aplikacji, która jest uruchamiana w systemach operacyjnych z wersją systemu Windows 8 lub nowszą.Aby uzyskać więcej informacji na temat dostępnych polityk harmonogramu, zobacz PolicyElementKey — Wyliczenie. |
Funkcje
Nazwa |
Opis |
---|---|
Przydziela blok pamięci o rozmiarze określonym przez Concurrency Runtime Caching Suballocator. |
|
Przeciążone.Operacja asynchronicznego wysyłania, która planuje zadania do propagowania danych do bloku docelowego. |
|
Anuluje aktualnie przeprowadzane zadanie.Ta funkcja może zostać wywołana z treści zadania, aby przerwać jego wykonywanie i spowodować wprowadzenie stanu canceled.Chociaż może być używane w odpowiedzi na funkcję is_task_cancellation_requested funkcji, można go także użyć niezależnie, aby zainicjować anulowanie zadania, które jest w trakcie wykonywania. Nie jest to obsługiwany scenariusz, aby wywołać tę funkcję, jeśli nie jesteś w treści task.To spowoduje nieokreślone zachowanie, na przykład awarię lub zawieszenie aplikacji. |
|
Tworzy konstrukcję asynchroniczną środowiska wykonawczego systemu Windows w oparciu o dostarczony przez użytkownika obiekt lambda lub obiekt funkcyjny.Zwracanym typem metody create_async jest IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ lub IAsyncOperationWithProgress<TResult, TProgress>^, zależnie od podpisu wyrażenia lambda przekazanego do metody. |
|
Przeciążone.Tworzy obiekt PPL zadania.create_task może być używany wszędzie, gdzie użyto konstruktora zadania.To jest przewidziane przede wszystkim dla wygody, ponieważ umożliwia korzystanie ze słowa kluczowego auto podczas tworzenia zadań. |
|
Zwraca interfejs, który reprezentuje wystąpienie singleton Menedżera zasobów Runtime współbieżności.Menedżer zasobów jest odpowiedzialny za przydzielanie zasobów pracownikom, co do których chcesz, żeby współpracowali. |
|
Wyłącza śledzenie w środowisku uruchomieniowym współbieżności.Ta funkcja jest przestarzała, ponieważ śledzenie ETW nie jest rejestrowane domyślnie. |
|
Włącza śledzenie w środowisku uruchomieniowym współbieżności.Ta funkcja jest przestarzała, ponieważ śledzenie ETW jest teraz rejestrowane domyślnie. |
|
Zwalnia blok pamięci uprzednio przydzielony przez Alloc metodę Suballocator buforowania w czasie wykonywania współbieżności. |
|
get_ambient_scheduler — Funkcja (współbieżność środowiska wykonawczego) |
|
Zwraca unikatowy identyfikator, który może być przypisany do kontekstu wykonania, który implementuje interfejs IExecutionContext. |
|
Zwraca wersję systemu operacyjnego. |
|
Zwraca liczbę wątków sprzętu w systemie podstawowym. |
|
Zwraca liczbę węzłów NUMA lub pakietów procesora w systemie podstawowym. |
|
Zwraca unikatowy identyfikator, który może być przypisany do harmonogramu, który implementuje interfejs IScheduler. |
|
Tworzy punkt przerwania do anulowania.Gdy anulowanie jest w toku, w kontekście z którego funkcja została wywołana, zostanie wyrzucony wewnętrzny wyjątek, który przerywa wykonywanie aktualnie wykonywanej pracy równoległej.Jeśli anulowanie nie jest w toku, funkcja nie robi nic. |
|
Zwraca wskazanie czy grupa zadań, która jest aktualnie wykonywana wewnątrz bieżącego kontekstu jest w trakcie aktywnego anulowania (lub znajdzie się w nim wkrótce).Należy zauważyć, że jeśli nie ma żadnej grupy zadań aktualnie wykonywanych wewnątrz bieżącego kontekstu, zostanie zwrócona wartość false. |
|
Zwraca wskazanie, czy zadanie, które jest aktualnie wykonywane, odebrało żądanie anulowania jego wykonania.Anulowanie jest wymagane w przypadku zadania, jeśli zadanie zostało utworzone z tokenem anulowania a źródło tokenu skojarzone z tym tokenem zostało anulowane. |
|
Przeciążone.Tworzy blok obsługi wiadomości choice z opcjonalnego Scheduler lub ScheduleGroup i dwóch lub więcej źródeł danych wejściowych. |
|
Przeciążone.Tworzy blok obsługi wiadomości greedy multitype_join z opcjonalnego Scheduler lub ScheduleGroup i dwóch lub więcej źródeł danych wejściowych. |
|
Przeciążone.Tworzy blok obsługi wiadomości non_greedy multitype_join z opcjonalnego Scheduler lub ScheduleGroup i dwóch lub więcej źródeł danych wejściowych. |
|
Metoda do tworzenia obiektu task_handle. |
|
Przeciążone.Rozmieszcza elementy znajdujące się w określonym zakresie, w niemalejącej kolejności, lub według kryteriów sortowania określonych przez binarny predykat, równolegle.Ta funkcja jest semantycznie podobna do std::sort, ponieważ jest oparta na sortowaniu, niestabilna, sortuje z miejsca, z tym wyjątkiem, że potrzebuje O(n) dodatkowego miejsca i wymaga domyślnego inicjowania sortowanych elementów. |
|
Przeciążone.parallel_for wykonuje iterację na zakresie indeksów i wykonuje funkcję dostarczoną przez użytkownika, w każdej iteracji, równolegle. |
|
Przeciążone.parallel_for_each wykonuje określoną funkcję, na każdym elemencie z zakresu, równolegle.Jest semantycznie równoważna z funkcją for_each z przestrzeni nazw std z tym, że iteracja po elementach jest wykonywana równolegle, a kolejność iteracji jest nieokreślona.Argument _Func musi obsługiwać operator wywołania funkcji w postaci operator()(T) gdzie parametr T jest typem elementów kontenera, przez który następuje iteracja. |
|
Przeciążone.Wykonuje obiekty funkcji dostarczone jako parametry, równolegle, i blokuje je aż do zakończenia ich wykonywania.Każdy obiekt funkcji może być wyrażeniem lambda, wskaźnikiem na funkcję, lub dowolny obiekt, który obsługuje operator wywołania funkcji z podpisem void operator()(). |
|
Przeciążone.Rozmieszcza elementy znajdujące się w określonym zakresie, w niemalejącej kolejności używając algorytmu sortowania pozycyjnego.Jest to stabilna funkcja sortowania, która wymaga funkcji projekcji, która potrafi projektować elementy w taki sposób, że będą sortowane podobnie jak liczby całkowitej bez znaku.Wymagane jest domyślne zainicjowanie sortowanych elementów. |
|
Przeciążone.Oblicza sumę wszystkich elementów w określonym przedziale przez obliczenie sumy kolejnych sum częściowych, lub oblicza wynik kolejnych wyników częściowych pobranych podobnie przy użyciu podanej operacji binarnej innej niż suma, równolegle.parallel_reduce jest semantycznie podobna do std::accumulate, z tym wyjątkiem, że wymaga od operacji binarnych by były zespolone i wymaga wartości tożsamości zamiast wartości początkowej. |
|
Przeciążone.Rozmieszcza elementy znajdujące się w określonym zakresie, w niemalejącej kolejności, lub według kryteriów sortowania określonych przez binarny predykat, równolegle.Ta funkcja jest semantycznie podobna do std::sort, ponieważ jest oparta na sortowaniu, niestabilna i sortuje w miejscu. |
|
Przeciążone.Wykonuje podany obiekt funkcyjny na każdym elemencie w zakresie sortowania, lub na parze elementów z dwóch zakresów sortowania, i kopiuje zwracaną wartość obiektu funkcyjnego do zakresu docelowego, równolegle.Ta funkcjonalność jest semantycznie równoważna z std::transform. |
|
Przeciążone.Ogólna implementacja otrzymania, pozwalająca kontekstowi na poczekanie na dane z dokładnie jednego źródła i przefiltrowanie akceptowanych wartości. |
|
Wykonuje obiekt funkcji natychmiast i synchronicznie w kontekście danego tokenu anulacji. |
|
Przeciążone.Synchroniczna operacja wysyłania, która czeka aż element docelowy albo zaakceptuje, albo odrzuci wiadomość. |
|
set_ambient_scheduler — Funkcja (współbieżność środowiska wykonawczego) |
|
Przeciążone.Ogranicza zasoby wykonania używane przez wewnętrzne wątki robocze środowiska uruchomieniowego współbieżności do określonego zbioru koligacji. Tę metodę można wywołać tylko przed utworzeniem Menedżera zasobów lub między okresami istnienia dwóch Menedżerów Zasobów.Może zostać wywołana wiele razy, tak długo, jak Menedżer zasobów nie istnieje w chwili wywołania.Po ustawieniu limitu koligacji, pozostaje on w mocy aż do następnego prawidłowego wywołania metody set_task_execution_resources. Podana maska koligacji nie musi być podzbiorem maski koligacji procesu.Koligacja procesów zostanie zaktualizowana, jeśli to konieczne. |
|
Wymienia elementy dwóch obiektów concurrent_vector. |
|
task_from_exception — Funkcja (współbieżność środowiska wykonawczego) |
|
task_from_result — Funkcja (współbieżność środowiska wykonawczego) |
|
Przypisuje podaną nazwę do bloku wiadomości lub agenta w wynikach śledzenia ETW. |
|
Przeciążone.Ogólna implementacja "spróbuj otrzymać", pozwalająca kontekstowi na poszukanie danych z dokładnie jednego źródła i przefiltrowanie akceptowanych wartości.Jeśli dane nie są gotowe, metoda zwróci wartość false. |
|
Wstrzymuje działanie bieżącego kontekstu na określoną ilość czasu. |
|
Tworzy zadanie, które zostanie ukończone pomyślnie, gdy wszystkie zadania dostarczone jako argumenty zakończą się pomyślnie. |
|
Przeciążone.Tworzy zadanie, które zostanie ukończone pomyślnie, gdy dowolne zadania dostarczone jako argumenty zakończą się pomyślnie. |
Operatory
Nazwa |
Opis |
---|---|
Bada, czy obiekt concurrent_vector po lewej stronie operatora nie równa się obiektowi concurrent_vector po prawej stronie. |
|
Przeciążone.Tworzy zadanie, które zostanie ukończone pomyślnie, gdy oba zadania dostarczone jako argumenty zakończą się pomyślnie. |
|
Przeciążone.Tworzy zadanie, które zostanie ukończone pomyślnie, gdy dowolne zadania dostarczone jako argumenty zakończą się pomyślnie. |
|
Bada, czy obiekt concurrent_vector po lewej stronie operatora jest mniejszy niż obiekt concurrent_vector po prawej stronie. |
|
Bada, czy obiekt concurrent_vector po lewej stronie operatora jest mniejszy bądź równy niż obiekt concurrent_vector po prawej stronie. |
|
Bada, czy obiekt concurrent_vector po lewej stronie operatora równa się obiektowi concurrent_vector po prawej stronie. |
|
Bada, czy obiekt concurrent_vector po lewej stronie operatora jest większy niż obiekt concurrent_vector po prawej stronie. |
|
Bada, czy obiekt concurrent_vector po lewej stronie operatora jest większy bądź równy niż obiekt concurrent_vector po prawej stronie. |
Stałe
Nazwa |
Opis |
---|---|
Identyfikator GUID kategorii ({B9B5B78C-0713-4898-A21A-C67949DCED07}) opisujący zdarzenia ETW uruchamiane przez biblioteki agentów w środowisku uruchomieniowym współbieżności. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z zadaniami. |
|
Identyfikator GUID dostawcy ETW dla środowiska uruchomieniowego współbieżności. |
|
Wskazuje poziom pomocy interfejsu Menedżera zasobów, zdefiniowanym w Visual Studio 2010. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bardziej szczegółowo opisane przez inną kategorię. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z kontekstami. |
|
Wartość wskazująca, że oczekiwania nigdy nie powinny wygasać. |
|
Wartość wskazująca, że minął czas oczekiwania. |
|
Specjalna wartość dla klucza zasad ContextPriority wskazująca, że priorytet wątku ze wszystkich kontekstów w harmonogramie powinien być taka sama, jak w przypadku wątku, który utworzył harmonogram. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z blokadami. |
|
Specjalna wartość dla kluczy zasad MinConcurrency i MaxConcurrency.Domyślna liczba sprzętowych wątków na komputerze, gdy brak innych ograniczeń. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z użyciem funkcji parallel_for_each. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z użyciem funkcji parallel_for. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z użyciem funkcji parallel_invoke. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z menadżerem zasobów. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z grupami planowania. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z aktywnością harmonogramu. |
|
Identyfikator GUID kategorii opisujący zdarzenia ETW uruchamiane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane procesorami wirtualnymi. |
Wymagania
Nagłówek: agents.h, concrt.h, concrtrm.h, concurrent_priority_queue.h, concurrent_queue.h, concurrent_unordered_map.h, concurrent_unordered_set.h, concurrent_vector.h, internal_concurrent_hash.h, internal_split_ordered_list.h, ppl.h, pplcancellation_token.h, pplconcrt.h, pplinterface.h, ppltasks.h