concurrency — Przestrzeń nazwy
Concurrency
Przestrzeń nazw udostępnia klasy i funkcje, które zapewniają dostęp do środowiska uruchomieniowego współbieżności, współbieżnej platformy programowania dla języka C++. Aby uzyskać więcej informacji, zobacz Środowisko uruchomieniowe współbieżności.
Składnia
namespace concurrency;
Członkowie
Typedefs
Nazwa/nazwisko | opis |
---|---|
runtime_object_identity |
Każde wystąpienie komunikatu ma tożsamość, która jest zgodna z nią podczas klonowania i przekazywania między składnikami obsługi komunikatów. Nie może to być adres obiektu komunikatu. |
task_status |
Typ reprezentujący stan terminalu zadania. Prawidłowe wartości to completed i canceled . |
TaskProc |
Abstrakcja podstawowa dla zadania, zdefiniowana jako void (__cdecl * TaskProc)(void *) . Element TaskProc jest wywoływany w celu wywołania treści zadania. |
TaskProc_t |
Abstrakcja podstawowa dla zadania, zdefiniowana jako void (__cdecl * TaskProc_t)(void *) . Element TaskProc jest wywoływany w celu wywołania treści zadania. |
Klasy
Nazwa/nazwisko | opis |
---|---|
affinity_partitioner, klasa | Klasa jest podobna affinity_partitioner do static_partitioner klasy, ale poprawia koligację pamięci podręcznej przez wybór podzestawów mapowania do wątków roboczych. Może znacząco poprawić wydajność, gdy pętla jest ponownie wykonywana w tym samym zestawie danych, a dane mieszczą się w pamięci podręcznej. Należy pamiętać, że ten sam affinity_partitioner obiekt musi być używany z kolejnymi iteracjami pętli równoległej wykonywanej w określonym zestawie danych, aby korzystać z lokalizacji danych. |
agent, klasa | Klasa przeznaczona do użycia jako klasa bazowa dla wszystkich niezależnych agentów. Służy do ukrywania stanu przed innymi agentami i interakcji z przekazywaniem komunikatów. |
auto_partitioner, klasa | Klasa auto_partitioner reprezentuje domyślną metodę parallel_for parallel_for_each i parallel_transform używa jej do partycjonowania zakresu, w ramach którego iterują. Ta metoda partycjonowania wykorzystuje kradzież zakresu na potrzeby równoważenia obciążenia, a także anulowanie na iterację. |
bad_target, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy blok obsługi komunikatów otrzymuje wskaźnik do obiektu docelowego, który jest nieprawidłowy dla wykonywanej operacji. |
call, klasa | call Blok obsługi komunikatów to wieloźródło, uporządkowanetarget_block , które wywołuje określoną funkcję podczas odbierania komunikatu. |
cancellation_token, klasa | Klasa cancellation_token reprezentuje możliwość określenia, czy niektóre operacje zostały zażądane do anulowania. Dany token może być skojarzony z elementem task_group , structured_task_group lub task w celu zapewnienia niejawnego anulowania. Można go również sondować pod kątem anulowania lub mieć zarejestrowane wywołanie zwrotne, jeśli i po anulowaniu skojarzonej cancellation_token_source . |
cancellation_token_registration, klasa | Klasa cancellation_token_registration reprezentuje powiadomienie zwrotne z klasy cancellation_token . register Gdy metoda w obiekcie cancellation_token jest używana do odbierania powiadomienia o anulowaniu, obiekt jest zwracany jako dojście do wywołania zwrotnego, cancellation_token_registration aby obiekt wywołujący mógł zażądać określonego deregister wywołania zwrotnego, nie można już wykonać przy użyciu metody . |
cancellation_token_source, klasa | Klasa cancellation_token_source reprezentuje możliwość anulowania niektórych operacji, które można anulować. |
choice, klasa | choice Blok obsługi komunikatów to blok wieloźródłowy, pojedynczy element docelowy reprezentujący interakcję przepływu sterowania z zestawem źródeł. Blok wyboru będzie czekać na każde z wielu źródeł, aby utworzyć komunikat i będzie propagować indeks źródła, który wygenerował komunikat. |
combinable, klasa | Obiekt combinable<T> ma na celu zapewnienie prywatnych kopii danych wątkowych w celu wykonywania obliczeń podrzędnych bez blokady lokalnych wątków podczas algorytmów równoległych. Na końcu operacji równoległej obliczenia podrzędne thread-private można następnie scalić w końcowy wynik. Tej klasy można użyć zamiast zmiennej udostępnionej i może spowodować poprawę wydajności, jeśli w przeciwnym razie będzie wiele rywalizacji o tę współdzieloną zmienną. |
concurrent_priority_queue, klasa | Klasa concurrent_priority_queue jest kontenerem, który umożliwia jednoczesne wypychanie wielu wątków i wypychanie elementów podręcznych. Elementy są zwinięte w kolejności priorytetu, w której priorytet jest określany przez functor dostarczony jako argument szablonu. |
concurrent_queue, klasa | Klasa concurrent_queue jest klasą kontenera sekwencji, która umożliwia dostęp pierwszy na pierwszym wyjęcie do swoich elementów. Umożliwia ona ograniczony zestaw operacji bezpiecznych współbieżności, takich jak push i try_pop . |
concurrent_unordered_map, klasa | Klasa concurrent_unordered_map to kontener bezpieczny pod kontrolą współbieżności, który kontroluje różną długość sekwencji elementów typu std::pair<const K, _Element_type> . Sekwencja jest reprezentowana w sposób umożliwiający bezpieczne dołączanie współbieżności, dostęp do elementów, dostęp iteratora i operacje przechodzenia iteratora. |
concurrent_unordered_multimap, klasa | Klasa concurrent_unordered_multimap jest kontenerem bezpiecznym ze współbieżnością, który kontroluje różną długość sekwencji elementów typu std::pair<const K, _Element_type> . Sekwencja jest reprezentowana w sposób umożliwiający bezpieczne dołączanie współbieżności, dostęp do elementów, dostęp iteratora i operacje przechodzenia iteratora. |
concurrent_unordered_multiset, klasa | Klasa concurrent_unordered_multiset jest kontenerem bezpiecznym ze współbieżnością, który kontroluje różną długość sekwencji elementów typu K. Sekwencja jest reprezentowana w sposób umożliwiający bezpieczne dołączanie współbieżności, dostęp do elementów, dostęp iteratora i operacje przechodzenia iteratora. |
concurrent_unordered_set, klasa | Klasa concurrent_unordered_set jest kontenerem bezpiecznym ze współbieżnością, który kontroluje różną długość sekwencji elementów typu K. Sekwencja jest reprezentowana w sposób umożliwiający bezpieczne dołączanie współbieżności, dostęp do elementów, dostęp iteratora i operacje przechodzenia iteratora. |
concurrent_vector, klasa | Klasa concurrent_vector jest klasą kontenera sekwencji, która umożliwia losowy dostęp do dowolnego elementu. Umożliwia ona bezpieczne dołączanie współbieżności, dostęp do elementów, dostęp iteratora i operacje przechodzenia iteratora. |
Context, klasa | Reprezentuje abstrakcję kontekstu wykonywania. |
context_self_unblock, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy Unblock metoda Context obiektu jest wywoływana z tego samego kontekstu. Oznacza to próbę odblokowania się przez dany kontekst. |
context_unblock_unbalanced, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy wywołania Block obiektu i Unblock Context nie są prawidłowo sparowane. |
critical_section, klasa | Nieententrant mutex, który jest jawnie świadomy środowiska uruchomieniowego współbieżności. |
CurrentScheduler, klasa | Reprezentuje abstrakcję dla bieżącego harmonogramu skojarzonego z kontekstem wywołującym. |
default_scheduler_exists, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy Scheduler::SetDefaultSchedulerPolicy metoda jest wywoływana, gdy domyślny harmonogram już istnieje w ramach procesu. |
event, klasa | Zdarzenie resetowania ręcznego, które jawnie uwzględnia środowisko uruchomieniowe współbieżności. |
improper_lock, klasa | Ta klasa opisuje wyjątek zgłaszany w przypadku nieprawidłowego uzyskania blokady. |
improper_scheduler_attach, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy Attach metoda jest wywoływana w Scheduler obiekcie, który jest już dołączony do bieżącego kontekstu. |
improper_scheduler_detach, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy CurrentScheduler::Detach metoda jest wywoływana w kontekście, który nie został dołączony do żadnego harmonogramu przy użyciu Attach metody Scheduler obiektu. |
improper_scheduler_reference, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy Reference metoda jest wywoływana na Scheduler obiekcie, który jest zamykany, z kontekstu, który nie jest częścią tego harmonogramu. |
invalid_link_target, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy link_target wywoływana jest metoda bloku obsługi komunikatów, a blok obsługi komunikatów nie może połączyć się z obiektem docelowym. Może to być wynik przekroczenia liczby łączy, które blok obsługi komunikatów jest dozwolony lub próbuje połączyć określony element docelowy dwa razy z tym samym źródłem. |
invalid_multiple_scheduling, klasa | W tej klasie opisano wyjątek zgłaszany, gdy task_handle obiekt jest zaplanowany wiele razy przy użyciu run metody task_group obiektu lub bez interweniującego wywołania metody wait lub structured_task_group run_and_wait . |
invalid_operation, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy wykonywana jest nieprawidłowa operacja, która nie jest dokładniej opisana przez inny typ wyjątku zgłaszany przez środowisko uruchomieniowe współbieżności. |
invalid_oversubscribe_operation, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy Context::Oversubscribe metoda jest wywoływana z parametrem _BeginOversubscription ustawionym na false bez wcześniejszego wywołania Context::Oversubscribe metody z parametrem ustawionym _BeginOversubscription na true . |
invalid_scheduler_policy_key, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy do konstruktora obiektu jest przekazywany nieprawidłowy lub nieznany klucz lub SetPolicyValue metoda SchedulerPolicy obiektu jest przekazywana SchedulerPolicy klucz, który należy zmienić przy użyciu innych środków, takich jak SetConcurrencyLimits metoda. |
invalid_scheduler_policy_thread_specification, klasa | Ta klasa opisuje wyjątek zgłaszany podczas próby ustawienia limitów SchedulerPolicy współbieżności obiektu, tak aby wartość MinConcurrency klucza jest mniejsza niż wartość MaxConcurrency klucza. |
invalid_scheduler_policy_value, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy klucz SchedulerPolicy zasad obiektu jest ustawiony na nieprawidłową wartość dla tego klucza. |
ISource, klasa | Klasa ISource jest interfejsem dla wszystkich bloków źródłowych. Bloki źródłowe propagują komunikaty do ITarget bloków. |
ITarget, klasa | Klasa ITarget jest interfejsem dla wszystkich bloków docelowych. Bloki docelowe używają komunikatów oferowanych im przez ISource bloki. |
join, klasa | join Blok obsługi komunikatów to jednokierunkowe, wieloźródło, uporządkowanepropagator_block , które łączy ze sobą komunikaty typu T z każdego ze swoich źródeł. |
location, klasa | Abstrakcja lokalizacji fizycznej na sprzęcie. |
message, klasa | Podstawowa koperta komunikatu zawierająca ładunek danych przekazywany między blokami obsługi komunikatów. |
message_not_found, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy blok obsługi komunikatów nie może odnaleźć żądanego komunikatu. |
message_processor, klasa | Klasa message_processor jest abstrakcyjną klasą bazową do przetwarzania message obiektów. Nie ma żadnej gwarancji na kolejność komunikatów. |
missing_wait, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy istnieją zadania nadal zaplanowane do task_group obiektu lub structured_task_group w czasie wykonywania destruktora obiektu. Ten wyjątek nigdy nie zostanie zgłoszony, jeśli zostanie osiągnięty destruktor z powodu odwijania stosu w wyniku wyjątku. |
multi_link_registry, klasa | Obiekt multi_link_registry jest obiektem network_link_registry , który zarządza wieloma blokami źródłowymi lub wieloma blokami docelowymi. |
multitype_join, klasa | multitype_join Blok obsługi komunikatów to wieloźródłowy, pojedynczy docelowy blok obsługi komunikatów, który łączy komunikaty różnych typów z każdego ze swoich źródeł i oferuje krotkę połączonych komunikatów do swoich celów. |
nested_scheduler_missing_detach, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy środowisko uruchomieniowe współbieżności wykryje, że nie można wywołać CurrentScheduler::Detach metody w kontekście dołączonym do drugiego harmonogramu przy użyciu Attach metody Scheduler obiektu . |
network_link_registry, klasa | Abstrakcyjna network_link_registry klasa bazowa zarządza łączami między blokami źródłowymi i docelowymi. |
operation_timed_out, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy upłynął limit czasu operacji. |
ordered_message_processor, klasa | Element ordered_message_processor to element message_processor , który umożliwia blokom komunikatów przetwarzanie komunikatów w kolejności, w której zostały odebrane. |
overwrite_buffer, klasa | Blok overwrite_buffer obsługi komunikatów to wielowersyjny, wieloźródłowy, uporządkowany propagator_block w celu przechowywania pojedynczego komunikatu naraz. Nowe wiadomości zastępują wcześniej przechowywane. |
progress_reporter, klasa | Klasa reportera postępu umożliwia raportowanie powiadomień o postępie określonego typu. Każdy obiekt progress_reporter jest powiązany z określoną akcją lub operacją asynchroniczną. |
propagator_block, klasa | Klasa propagator_block jest abstrakcyjną klasą bazową dla bloków komunikatów, które są zarówno źródłem, jak i obiektem docelowym. Łączy funkcje klas source_block i target_block . |
reader_writer_lock, klasa | Blokada zapisywania i zapisywania opartego na kolejce czytnika i zapisywania z lokalnym tylko wirowaniem. Blokada przyznaje najpierw w - pierwszy na out (FIFO) dostęp do pisarzy i głoduje czytelników pod ciągłym obciążeniem pisarzy. |
ScheduleGroup, klasa | Reprezentuje abstrakcję dla grupy harmonogramu. Grupy harmonogramu organizują zestaw powiązanych prac, które mogą korzystać z zaplanowanego zbliżenia ze sobą albo czasowo, wykonując inne zadanie w tej samej grupie przed przejściem do innej grupy lub przestrzennie, wykonując wiele elementów w tej samej grupie w tym samym węźle NUMA lub w gniazdach fizycznych. |
Scheduler, klasa | Reprezentuje abstrakcję dla harmonogramu środowiska uruchomieniowego współbieżności. |
scheduler_not_attached, klasa | Ta klasa opisuje wyjątek zgłaszany podczas wykonywania operacji, która wymaga dołączenie harmonogramu do bieżącego kontekstu, a nie. |
scheduler_resource_allocation_error, klasa | Ta klasa opisuje wyjątek zgłoszony z powodu niepowodzenia uzyskania krytycznego zasobu w środowisku uruchomieniowym współbieżności. |
scheduler_worker_creation_error, klasa | Ta klasa opisuje wyjątek zgłoszony z powodu niepowodzenia tworzenia kontekstu wykonywania procesu roboczego w środowisku uruchomieniowym współbieżności. |
SchedulerPolicy, klasa | Klasa SchedulerPolicy zawiera zestaw par klucz/wartość, po jednym dla każdego elementu zasad, które kontrolują zachowanie wystąpienia harmonogramu. |
simple_partitioner, klasa | Klasa simple_partitioner reprezentuje statyczne partycjonowanie zakresu iterowane przez parallel_for element . Partycjonator dzieli zakres na fragmenty, tak aby każdy fragment miał co najmniej liczbę iteracji określonych przez rozmiar fragmentu. |
single_assignment, klasa | single_assignment Blok obsługi komunikatów to wielowersyjny, wieloźródłowy, uporządkowany propagator_block w celu przechowywania pojedynczego, jednokrotnego message zapisu. |
single_link_registry, klasa | Obiekt single_link_registry jest obiektem network_link_registry , który zarządza tylko jednym blokiem źródłowym lub docelowym. |
source_block, klasa | Klasa source_block jest abstrakcyjną klasą bazową dla bloków tylko do źródła. Klasa udostępnia podstawowe funkcje zarządzania linkami, a także typowe kontrole błędów. |
source_link_manager, klasa | Obiekt source_link_manager zarządza łączami sieciowymi bloku komunikatów do ISource bloków. |
static_partitioner, klasa | Klasa static_partitioner reprezentuje statyczne partycjonowanie zakresu iterowane przez parallel_for element . Partycjonator dzieli zakres na dowolną liczbę fragmentów, ponieważ istnieją procesy robocze dostępne dla bazowego harmonogramu. |
structured_task_group, klasa | Klasa structured_task_group reprezentuje wysoce ustrukturyzowaną kolekcję równoległej pracy. Można kolejkować poszczególne zadania równoległe do structured_task_group obiektu przy użyciu task_handle obiektów i czekać na ich ukończenie lub anulować grupę zadań przed zakończeniem wykonywania, co spowoduje przerwanie wszystkich zadań, które nie rozpoczęły wykonywania. |
target_block, klasa | Klasa target_block jest abstrakcyjną klasą bazową, która zapewnia podstawowe funkcje zarządzania linkami i sprawdzanie błędów tylko dla bloków docelowych. |
task, klasa (środowisko uruchomieniowe współbieżności) | Klasa PPL (Parallel Patterns Library). task task Obiekt reprezentuje pracę, która może być wykonywana asynchronicznie i jednocześnie z innymi zadaniami i równoległymi zadaniami utworzonymi przez algorytmy równoległe w środowisku uruchomieniowym współbieżności. Daje wynik typu _ResultType po pomyślnym zakończeniu. Zadania typu task<void> nie generują żadnych wyników. Zadanie można czekać i anulować niezależnie od innych zadań. Może również składać się z innych zadań przy użyciu wzorców kontynuacji(then ) i join(when_all ) i choice(when_any ). |
task_canceled, klasa | Ta klasa opisuje wyjątek zgłaszany przez warstwę zadań PPL w celu wymuszenia anulowania bieżącego zadania. Jest również zgłaszana przez metodę get() w zadaniu dla anulowanego zadania. |
task_completion_event, klasa | Klasa task_completion_event umożliwia opóźnienie wykonywania zadania do momentu spełnienia warunku lub uruchomienia zadania w odpowiedzi na zdarzenie zewnętrzne. |
task_continuation_context, klasa | Klasa task_continuation_context umożliwia określenie, gdzie ma zostać wykonana kontynuacja. Ta klasa jest przydatna tylko z poziomu aplikacji platformy UWP. W przypadku aplikacji innych niż środowisko wykonawcze systemu Windows kontekst wykonywania kontynuacji zadania jest określany przez środowisko uruchomieniowe i nie można go skonfigurować. |
task_group, klasa | Klasa task_group reprezentuje kolekcję równoległych prac, które można czekać lub anulować. |
task_handle, klasa | Klasa task_handle reprezentuje pojedynczy równoległy element roboczy. Hermetyzuje instrukcje i dane wymagane do wykonania pracy. |
task_options, klasa (środowisko uruchomieniowe współbieżności) | Reprezentuje dozwolone opcje tworzenia zadania |
timer, klasa | timer Blok obsługi komunikatów to pojedynczy element docelowy, który może wysyłać komunikat do obiektu docelowego source_block po upływie określonego czasu lub w określonych odstępach czasu. |
transformer, klasa | transformer Blok obsługi komunikatów to jednokierunkowe, wieloźródło, uporządkowanepropagator_block , które może akceptować komunikaty jednego typu i może przechowywać niezwiązaną liczbę komunikatów innego typu. |
unbounded_buffer, klasa | Blok unbounded_buffer obsługi komunikatów to wielokierunkowy, wieloźródłowy, uporządkowany propagator_block w stanie przechowywać niezwiązaną liczbę komunikatów. |
unsupported_os, klasa | Ta klasa opisuje wyjątek zgłaszany, gdy jest używany nieobsługiwany system operacyjny. |
Struktury
Nazwa/nazwisko | opis |
---|---|
DispatchState, struktura | Struktura DispatchState jest używana do transferu stanu do IExecutionContext::Dispatch metody . Opisuje on okoliczności, w których Dispatch metoda jest wywoływana w interfejsie IExecutionContext . |
IExecutionContext, struktura | Interfejs kontekstu wykonywania, który można uruchomić na danym procesorze wirtualnym i być przełączony kontekst kooperatywne. |
IExecutionResource, struktura | Abstrakcja wątku sprzętowego. |
IResourceManager, struktura | Interfejs usługi Resource Manager środowiska uruchomieniowego współbieżności. Jest to interfejs, za pomocą którego harmonogramy komunikują się z usługą Resource Manager. |
IScheduler, struktura | Interfejs abstrakcji harmonogramu pracy. Menedżer zasobów środowiska uruchomieniowego współbieżności używa tego interfejsu do komunikowania się z harmonogramami pracy. |
ISchedulerProxy, struktura | Interfejs, za pomocą którego harmonogramy komunikują się z usługą Resource Manager środowiska uruchomieniowego współbieżności w celu negocjowania alokacji zasobów. |
IThreadProxy, struktura | Abstrakcja wątku wykonywania. W zależności SchedulerType od klucza zasad tworzonego harmonogramu usługa Resource Manager udzieli ci serwera proxy wątku, który jest wspierany przez zwykły wątek Win32 lub wątek z możliwością schedulable (UMS) w trybie użytkownika. Wątki pakietu UMS są obsługiwane w 64-bitowych systemach operacyjnych w wersji Windows 7 lub nowszej. |
ITopologyExecutionResource, struktura | Interfejs zasobu wykonawczego zdefiniowany przez usługę Resource Manager. |
ITopologyNode, struktura | Interfejs do węzła topologii zgodnie z definicją w usłudze Resource Manager. Węzeł zawiera co najmniej jeden zasób wykonywania. |
IUMSCompletionList, struktura | Reprezentuje listę uzupełniania pakietu UMS. Gdy wątek pakietu UMS blokuje wyznaczony kontekst planowania harmonogramu, jest wysyłany w celu podjęcia decyzji o tym, co należy zaplanować w katalogu głównym bazowego procesora wirtualnego, gdy oryginalny wątek jest blokowany. Po odblokowaniu oryginalnego wątku system operacyjny tworzy kolejkę do listy uzupełniania, która jest dostępna za pośrednictwem tego interfejsu. Harmonogram może wykonywać zapytania dotyczące listy uzupełniania w wyznaczonym kontekście planowania lub w innym miejscu, w których wyszukuje pracę. |
IUMSScheduler, struktura | Interfejs abstrakcji harmonogramu pracy, który chce, aby menedżer zasobów środowiska uruchomieniowego współbieżności przekazał mu wątki z możliwością schedulable (UMS) w trybie użytkownika. Usługa Resource Manager używa tego interfejsu do komunikowania się z harmonogramami wątków usługi UMS. Interfejs IUMSScheduler dziedziczy z interfejsu IScheduler . |
IUMSThreadProxy, struktura | Abstrakcja wątku wykonywania. Jeśli chcesz, aby harmonogram otrzymał wątki schedulable (UMS) w trybie użytkownika, ustaw wartość elementu SchedulerKind zasad harmonogramu na UmsThreadDefault , i zaimplementuj IUMSScheduler interfejs. Wątki pakietu UMS są obsługiwane tylko w 64-bitowych systemach operacyjnych z systemem Windows 7 lub nowszym. |
IUMSUnblockNotification, struktura | Reprezentuje powiadomienie z usługi Resource Manager, że serwer proxy wątku, który zablokował i wyzwolił powrót do wyznaczonego kontekstu planowania harmonogramu, został odblokowany i jest gotowy do zaplanowana. Ten interfejs jest nieprawidłowy, gdy skojarzony kontekst wykonywania serwera proxy wątku zwrócony z GetContext metody zostanie ponownie zaplanowany. |
IVirtualProcessorRoot, struktura | Abstrakcja wątku sprzętowego, na którym może być wykonywany serwer proxy wątku. |
scheduler_interface, struktura | Interfejs harmonogramu |
scheduler_ptr, struktura (środowisko uruchomieniowe współbieżności) | Reprezentuje wskaźnik do harmonogramu. Ta klasa istnieje, aby umożliwić specyfikację współużytkowanego okresu istnienia przy użyciu shared_ptr lub zwykłego odwołania przy użyciu wskaźnika pierwotnego. |
Wyliczenia
Nazwa/nazwisko | opis |
---|---|
agent_status | Prawidłowe stany dla elementu agent . |
Agents_EventType | Typy zdarzeń, które można śledzić przy użyciu funkcji śledzenia oferowanych przez bibliotekę agentów |
ConcRT_EventType | Typy zdarzeń, które można śledzić przy użyciu funkcji śledzenia oferowanych przez środowisko uruchomieniowe współbieżności. |
Concrt_TraceFlags | Flagi śledzenia typów zdarzeń |
CriticalRegionType | Typ regionu krytycznego, w którym znajduje się kontekst. |
DynamicProgressFeedbackType | Używane przez DynamicProgressFeedback zasady do opisania, czy zasoby harmonogramu zostaną ponownie zrównoważone zgodnie z informacjami statystycznymi zebranymi z harmonogramu, czy tylko na podstawie procesorów wirtualnych przechodzących do stanu bezczynności i wychodzących przez wywołania Activate metod i Deactivate w interfejsie IVirtualProcessorRoot . Aby uzyskać więcej informacji na temat dostępnych zasad harmonogramu, zobacz PolicyElementKey. |
join_type | Typ bloku obsługi komunikatów join . |
message_status | Prawidłowe odpowiedzi dla oferty message obiektu do bloku. |
PolicyElementKey | Klucze zasad opisujące aspekty zachowania harmonogramu. Każdy element zasad jest opisany przez parę klucz-wartość. Aby uzyskać więcej informacji na temat zasad harmonogramu i ich wpływu na harmonogramy, zobacz Harmonogram zadań. |
Typ harmonogramu | Używane przez SchedulerKind zasady do opisywania typu wątków, które harmonogram powinien używać dla podstawowych kontekstów wykonywania. Aby uzyskać więcej informacji na temat dostępnych zasad harmonogramu, zobacz PolicyElementKey. |
SchedulingProtocolType | Używane przez SchedulingProtocol zasady do opisania algorytmu planowania, który będzie używany dla harmonogramu. Aby uzyskać więcej informacji na temat dostępnych zasad harmonogramu, zobacz PolicyElementKey. |
SwitchingProxyState | Służy do oznaczania stanu serwera proxy wątku, gdy wykonuje przełącznik kontekstu współpracy do innego serwera proxy wątku. |
task_group_status | Opisuje stan task_group wykonywania obiektu lub structured_task_group . Wartość tego typu jest zwracana przez wiele metod, które oczekują na ukończenie zadań zaplanowanych do grupy zadań. |
WinRTInitializationType | Używane przez WinRTInitialization zasady do opisania, czy i jak środowisko wykonawcze systemu Windows zostaną zainicjowane w wątkach harmonogramu dla aplikacji, która działa w systemach operacyjnych w wersji Windows 8 lub nowszej. Aby uzyskać więcej informacji na temat dostępnych zasad harmonogramu, zobacz PolicyElementKey. |
Funkcje
Nazwa/nazwisko | opis |
---|---|
Alloc, funkcja | Przydziela blok pamięci o rozmiarze określonym z Buforowanie podrzędnego przydziału środowiska uruchomieniowego współbieżności. |
asend, funkcja | Przeciążone. Asynchroniczna operacja wysyłania, która planuje zadanie propagacji danych do bloku docelowego. |
cancel_current_task, funkcja | Anuluje aktualnie wykonywane zadanie. Tę funkcję można wywołać z poziomu treści zadania, aby przerwać wykonywanie zadania i spowodować jego wejście do canceled stanu.Nie jest obsługiwanym scenariuszem wywoływania tej funkcji, jeśli nie znajdujesz się w treści elementu task . Spowoduje to niezdefiniowane zachowanie, takie jak awaria lub brak odpowiedzi w aplikacji. |
create_async, funkcja | Tworzy konstrukcję asynchroniczną środowisko wykonawcze systemu Windows opartą na podanym przez użytkownika obiekcie lambda lub funkcji. Zwracany create_async typ jest jednym z IAsyncAction^ , , IAsyncActionWithProgress<TProgress>^ IAsyncOperation<TResult>^ lub IAsyncOperationWithProgress<TResult, TProgress>^ na podstawie podpisu lambda przekazanego do metody . |
create_task, funkcja | Przeciążone. Tworzy obiekt zadania PPL. create_task można użyć w dowolnym miejscu, w którym można użyć konstruktora zadań. Jest ona udostępniana głównie dla wygody, ponieważ umożliwia używanie słowa kluczowego auto podczas tworzenia zadań. |
CreateResourceManager, funkcja | Zwraca interfejs reprezentujący pojedyncze wystąpienie usługi Resource Manager środowiska uruchomieniowego współbieżności. Usługa Resource Manager jest odpowiedzialna za przypisywanie zasobów do harmonogramów, które chcą współpracować ze sobą. |
DisableTracing, funkcja | Wyłącza śledzenie w środowisku uruchomieniowym współbieżności. Ta funkcja jest przestarzała, ponieważ śledzenie ETW jest domyślnie wyrejestrowane. |
EnableTracing, funkcja | Włącza śledzenie w środowisku uruchomieniowym współbieżności. Ta funkcja jest przestarzała, ponieważ śledzenie ETW jest teraz domyślnie włączone. |
Bezpłatna funkcja | Zwalnia blok pamięci przydzielonej wcześniej przez Alloc metodę do środowiska uruchomieniowego współbieżności Buforowanie podrzędnego przydziału. |
funkcja get_ambient_scheduler (środowisko uruchomieniowe współbieżności) | |
GetExecutionContextId, funkcja | Zwraca unikatowy identyfikator, który można przypisać do kontekstu wykonywania, który implementuje IExecutionContext interfejs. |
GetOSVersion, funkcja | Zwraca wersję systemu operacyjnego. |
GetProcessorCount, funkcja | Zwraca liczbę wątków sprzętowych w systemie bazowym. |
GetProcessorNodeCount, funkcja | Zwraca liczbę węzłów NUMA lub pakietów procesora w systemie bazowym. |
GetSchedulerId, funkcja | Zwraca unikatowy identyfikator, który można przypisać do harmonogramu implementującego IScheduler interfejs. |
interruption_point, funkcja | Tworzy punkt przerwania dla anulowania. Jeśli anulowanie jest w toku w kontekście, w którym jest wywoływana ta funkcja, zgłosi wyjątek wewnętrzny, który przerywa wykonywanie aktualnie wykonywanej pracy równoległej. Jeśli anulowanie nie jest w toku, funkcja nic nie robi. |
is_current_task_group_canceling, funkcja | Zwraca wskazanie, czy grupa zadań, która aktualnie wykonuje wbudowane w bieżącym kontekście, znajduje się w trakcie aktywnego anulowania (lub wkrótce). Należy pamiętać, że jeśli nie ma obecnie wykonywanej wbudowanej grupy zadań w bieżącym kontekście, false zostanie zwrócona. |
make_choice, funkcja | Przeciążone. Tworzy blok obsługi komunikatów choice z opcjonalnych Scheduler lub ScheduleGroup i dwóch lub więcej źródeł danych wejściowych. |
make_greedy_join, funkcja | Przeciążone. Tworzy blok obsługi komunikatów greedy multitype_join z opcjonalnych Scheduler lub ScheduleGroup i dwóch lub więcej źródeł danych wejściowych. |
make_join, funkcja | Przeciążone. Tworzy blok obsługi komunikatów non_greedy multitype_join z opcjonalnych Scheduler lub ScheduleGroup i dwóch lub więcej źródeł danych wejściowych. |
make_task, funkcja | Metoda fabryki do tworzenia task_handle obiektu. |
parallel_buffered_sort, funkcja | Przeciążone. Rozmieszcza elementy w określonym zakresie w kolejność niezstąpiącą lub zgodnie z kryterium porządkowania określonym przez predykat binarny równolegle. Ta funkcja jest semantycznie podobna do std::sort w tym, że jest to sortowanie oparte na porównaniach, niestabilne, w miejscu, z wyjątkiem tego, że wymaga O(n) dodatkowego miejsca i wymaga domyślnej inicjowania dla posortowanych elementów. |
parallel_for, funkcja | Przeciążone. parallel_for wykonuje iterację w zakresie indeksów i wykonuje funkcję dostarczaną przez użytkownika w każdej iteracji równolegle. |
parallel_for_each, funkcja | Przeciążone. parallel_for_each stosuje określoną funkcję do każdego elementu w zakresie równolegle. Jest ona semantycznie równoważna for_each funkcji w std przestrzeni nazw, z tą różnicą, że iteracja nad elementami jest wykonywana równolegle, a kolejność iteracji jest nieokreślona. Argument _Func musi obsługiwać operator wywołania funkcji formularza operator()(T) , w którym parametr T jest typem elementu kontenera, który jest iteracja. |
parallel_invoke, funkcja | Przeciążone. Wykonuje obiekty funkcji podane równolegle jako parametry i blokuje je do momentu zakończenia wykonywania. Każdy obiekt funkcji może być wyrażeniem lambda, wskaźnikiem do funkcji lub dowolnym obiektem obsługującym operator wywołania funkcji z podpisem void operator()() . |
parallel_radixsort, funkcja | Przeciążone. Rozmieszcza elementy w określonym zakresie w kolejność niezstąpiącą przy użyciu algorytmu sortowania promieniowego. Jest to stabilna funkcja sortowania, która wymaga funkcji projekcji, która umożliwia sortowanie elementów w niepodpisane klucze całkowite. Inicjowanie domyślne jest wymagane dla posortowanych elementów. |
parallel_reduce, funkcja | Przeciążone. Oblicza sumę wszystkich elementów w określonym zakresie, obliczając kolejne sumy częściowe lub oblicza wynik kolejnych częściowych wyników uzyskanych podobnie z użyciem określonej operacji binarnej innej niż suma, równolegle. parallel_reduce jest semantycznie podobny do std::accumulate , z tą różnicą, że wymaga skojarzenia operacji binarnej i wymaga wartości tożsamości zamiast wartości początkowej. |
parallel_sort, funkcja | Przeciążone. Rozmieszcza elementy w określonym zakresie w kolejność niezstąpiącą lub zgodnie z kryterium porządkowania określonym przez predykat binarny równolegle. Ta funkcja jest semantycznie podobna do std::sort w tym, że jest to sortowanie oparte na porównaniach, niestabilne, w miejscu. |
parallel_transform, funkcja | Przeciążone. Stosuje określony obiekt funkcji do każdego elementu w zakresie źródłowym lub do pary elementów z dwóch zakresów źródłowych i kopiuje zwracane wartości obiektu funkcji do zakresu docelowego równolegle. Ta funkcja jest semantycznie równoważna funkcji .std::transform |
receive, funkcja | Przeciążone. Ogólna implementacja odbierania, umożliwiając kontekstowi oczekiwanie na dane z dokładnie jednego źródła i filtrowanie akceptowanych wartości. |
run_with_cancellation_token, funkcja | Wykonuje obiekt funkcji natychmiast i synchronicznie w kontekście danego tokenu anulowania. |
send, funkcja | Przeciążone. Synchroniczna operacja wysyłania, która czeka do momentu zaakceptowania lub odrzucenia komunikatu przez element docelowy. |
funkcja set_ambient_scheduler (środowisko uruchomieniowe współbieżności) | |
set_task_execution_resources, funkcja | Przeciążone. Ogranicza zasoby wykonywania używane przez wewnętrzne wątki procesu roboczego środowiska uruchomieniowego współbieżności do określonego zestawu koligacji. Ta metoda jest prawidłowa do wywołania tylko przed utworzeniem usługi Resource Manager lub między dwoma okresami istnienia usługi Resource Manager. Może być wywoływany wiele razy, o ile usługa Resource Manager nie istnieje w momencie wywołania. Po ustawieniu limitu koligacji pozostaje ona w mocy do następnego prawidłowego set_task_execution_resources wywołania metody.Podana maska koligacji nie musi być podzbiorem maski koligacji procesu. Koligacja procesu zostanie zaktualizowana w razie potrzeby. |
swap, funkcja | Wymienia elementy dwóch concurrent_vector obiektów. |
funkcja task_from_exception (środowisko uruchomieniowe współbieżności) | |
funkcja task_from_result (środowisko uruchomieniowe współbieżności) | |
Trace_agents_register_name, funkcja | Kojarzy daną nazwę z blokiem komunikatów lub agentem w śladzie ETW. |
try_receive, funkcja | Przeciążone. Ogólna implementacja try-receive, umożliwiając kontekstowi wyszukiwanie danych z dokładnie jednego źródła i filtrowanie akceptowanych wartości. Jeśli dane nie są gotowe, metoda zwróci wartość false. |
wait, funkcja | Wstrzymuje bieżący kontekst przez określony czas. |
when_all, funkcja | Tworzy zadanie, które zostanie ukończone pomyślnie po pomyślnym zakończeniu wszystkich zadań dostarczonych jako argumenty. |
when_any, funkcja | Przeciążone. Tworzy zadanie, które zostanie ukończone pomyślnie po pomyślnym zakończeniu któregokolwiek z zadań dostarczonych jako argumenty. |
Operatory
Nazwa/nazwisko | opis |
---|---|
operator!= | Sprawdza, czy concurrent_vector obiekt po lewej stronie operatora nie jest równy concurrent_vector obiektowi po prawej stronie. |
operator&&y | Przeciążone. Tworzy zadanie, które zostanie ukończone pomyślnie, gdy oba zadania dostarczone jako argumenty zakończą się pomyślnie. |
operator|| |
Przeciążone. Tworzy zadanie, które zostanie wykonane pomyślnie po pomyślnym zakończeniu któregokolwiek z zadań dostarczonych jako argumenty. |
operator< | Sprawdza, czy concurrent_vector obiekt po lewej stronie operatora jest mniejszy niż concurrent_vector obiekt po prawej stronie. |
operator< = | Sprawdza, czy concurrent_vector obiekt po lewej stronie operatora jest mniejszy lub równy concurrent_vector obiektowi po prawej stronie. |
operator== | Sprawdza, czy concurrent_vector obiekt po lewej stronie operatora jest równy concurrent_vector obiektowi po prawej stronie. |
operator> | Sprawdza, czy concurrent_vector obiekt po lewej stronie operatora jest większy niż concurrent_vector obiekt po prawej stronie. |
operator> = | Sprawdza, czy concurrent_vector obiekt po lewej stronie operatora jest większy lub równy concurrent_vector obiektowi po prawej stronie. |
Stałe
Nazwa/nazwisko | opis |
---|---|
AgentEventGuid | Identyfikator GUID kategorii ({B9B5B78C-0713-4898-A21A-C67949DCED07}) opisujący zdarzenia ETW wyzwalane przez bibliotekę Agentów w środowisku uruchomieniowym współbieżności. |
ChoreEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio związane z zadaniami lub zadaniami. |
ConcRT_ProviderGuid | Identyfikator GUID dostawcy ETW dla środowiska uruchomieniowego współbieżności. |
CONCRT_RM_VERSION_1 | Wskazuje obsługę interfejsu usługi Resource Manager zdefiniowanego w programie Visual Studio 2010. |
ConcRTEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które nie zostały dokładniej opisane w innej kategorii. |
ContextEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio powiązane z kontekstami. |
COOPERATIVE_TIMEOUT_INFINITE | Wartość wskazująca, że limit czasu oczekiwania nigdy nie powinien być przekroczony. |
COOPERATIVE_WAIT_TIMEOUT | Wartość wskazująca, że upłynął limit czasu oczekiwania. |
INHERIT_THREAD_PRIORITY | Wartość specjalna klucza ContextPriority zasad wskazująca, że priorytet wątku wszystkich kontekstów w harmonogramie powinien być taki sam jak wątek, który utworzył harmonogram. |
LockEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio związane z blokadami. |
MaxExecutionResources | Wartość specjalna dla kluczy MinConcurrency zasad i MaxConcurrency . Domyślnie liczba wątków sprzętowych na maszynie w przypadku braku innych ograniczeń. |
PPLParallelForeachEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio związane z użyciem parallel_for_each funkcji. |
PPLParallelForEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio związane z użyciem parallel_for funkcji. |
PPLParallelInvokeEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio związane z użyciem parallel_invoke funkcji. |
ResourceManagerEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio związane z menedżerem zasobów. |
ScheduleGroupEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio związane z grupami harmonogramu. |
SchedulerEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio związane z działaniem harmonogramu. |
VirtualProcessorEventGuid | Identyfikator GUID kategorii opisujący zdarzenia ETW wyzwalane przez środowisko uruchomieniowe współbieżności, które są bezpośrednio związane z 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
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla