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_forparallel_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_grouplub 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 UnblockContext 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_grouprun_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_forelement . 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 messagezapisu.
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_forelement . 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ż

Odwołanie