Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пространство имен Concurrency предоставляет классы и функции, предоставляющие доступ к среде выполнения с параллелизмом, которая является платформой параллельного программирования для C++. Дополнительные сведения см.в статье Concurrency Runtime (Среда выполнения с параллелизмом).
Синтаксис
namespace concurrency;
Участники
Определения типов
| Имя | Описание |
|---|---|
runtime_object_identity |
Каждый экземпляр сообщения имеет идентификатор, который сопутствует ему при клонировании и передаче между компонентами обмена сообщениями. Он не может быть адресом объекта сообщения. |
task_status |
Тип, который представляет конечное состояние задачи. Допустимые значения — completed и canceled. |
TaskProc |
Простая абстракция для задачи, определенная как void (__cdecl * TaskProc)(void *).
TaskProc вызывается для вызова тела задачи. |
TaskProc_t |
Простая абстракция для задачи, определенная как void (__cdecl * TaskProc_t)(void *).
TaskProc вызывается для вызова тела задачи. |
Классы
| Имя | Описание |
|---|---|
| Класс affinity_partitioner | Класс affinity_partitioner аналогичен классу static_partitioner, но он улучшает локальность кэша за счет выбора сопоставления поддиапазонов с рабочими потоками. Он может значительно повысить производительность, если цикл повторно выполняется в одном и том же наборе данных и данные помещаются в кэш. Обратите внимание, что один и тот же объект affinity_partitioner должен использоваться с последующими итерациями параллельного цикла, выполняемого в указанном наборе данных, чтобы воспользоваться преимуществом локальности данных. |
| Класс Agent | Класс, предназначенный для использования в качестве базового класса для всех независимых агентов. Он используется для скрытия состояния от других агентов и взаимодействия посредством передачи сообщений. |
| Класс auto_partitioner | Класс auto_partitioner представляет метод, который алгоритмы parallel_for, parallel_for_each и parallel_transform используют по умолчанию для разделения обрабатываемого диапазона. Этот метод секционирования использует кражу диапазона для балансировки нагрузки, а также отмену на каждой итерации. |
| Класс bad_target | Этот класс описывает исключение, которое создается, если блок обмена сообщениями получает указатель на целевой объект, который неверен для выполняемой операции. |
| Класс call | Блок обмена сообщениями call — это упорядоченный блок target_block с несколькими источниками, который вызывает заданную функцию при получении сообщения. |
| Класс cancellation_token | Класс cancellation_token представляет возможность определить, получала ли некоторая операция запрос на отмену. Заданный токен можно связать с task_group, structured_task_group или task, чтобы обеспечить неявную отмену. Его также можно опрашивать на предмет отмены или зарегистрировать обратный вызов для той ситуации, когда отменяется связанный cancellation_token_source. |
| Класс CancellationTokenRegistration | Класс cancellation_token_registration представляет собой уведомление обратного вызова из cancellation_token. При использовании метода register на cancellation_token для получения уведомления о том, когда происходит отмена, объект cancellation_token_registration возвращается как дескриптор обратного вызова, чтобы вызывающий код мог отменить выполнение конкретного обратного вызова с помощью метода deregister. |
| Класс cancellation_token_source | Класс cancellation_token_source представляет возможность отмены некоторой отменяемой операции. |
| Класс Choice | Блок обмена сообщениями choice — это блок с несколькими источниками и одной целью, который представляет взаимодействие потока управления с набором источников. Блок choice будет ожидать, пока один из нескольких источников создаст сообщение и передаст индекс источника, создавшего сообщение. |
| Комбинируемый класс | Объект combinable<T> предназначен для предоставления приватных для потока копий данных, чтобы выполнять без блокировок локальные для потока подвычисления в параллельных алгоритмах. В конце выполнения параллельной операции подвычисления, частные для потока, можно объединить в конечный результат. Этот класс можно использовать вместо разделяемой переменной, что может улучшить производительность при большом числе конфликтов на эту переменную. |
| Класс concurrent_priority_queue | Класс concurrent_priority_queue — это контейнер, который позволяет нескольким потокам параллельно помещать и извлекать элементы. Элементы извлекаются в порядке приоритета, где приоритет определяется функтором, предоставленным в качестве аргумента шаблона. |
| Класс concurrent_queue | Класс concurrent_queue представляет собой контейнер типа последовательности, который позволяет доступ к элементам по принципу «первым вошел — первым вышел». Он позволяет использовать ограниченный набор параллельно-безопасных операций, таких как push и try_pop. |
| Класс concurrent_unordered_map | Класс concurrent_unordered_map представляет собой безопасный в отношении параллелизма контейнер, управляющий последовательностью элементов типа std::pair<const K, _Element_type> переменной длины. Последовательность представлена таким образом, что позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора. |
| Класс concurrent_unordered_multimap | Класс concurrent_unordered_multimap представляет собой безопасный в отношении параллелизма контейнер, управляющий последовательностью элементов типа std::pair<const K, _Element_type> переменной длины. Последовательность представлена таким образом, которая позволяет безопасно при параллелизме выполнять операции добавления, доступа к элементу, доступа к итератору и обхода итератора. |
| Класс concurrent_unordered_multiset | Класс concurrent_unordered_multiset — это контейнер, безопасный для параллельного выполнения, который управляет последовательностью элементов типа K с переменной длиной. Последовательность представлена таким образом, чтобы обеспечить безопасное добавление в условиях параллельного выполнения, доступ к элементам, доступ к итератору и его обходу. |
| Класс concurrent_unordered_set | Класс concurrent_unordered_set — это контейнер, безопасный для параллельного выполнения, который управляет последовательностью элементов типа K с переменной длиной. Последовательность представлена таким образом, чтобы обеспечить безопасное для параллельного выполнения добавление, доступ к элементам, доступ к итератору и перемещение по итератору. |
| Класс concurrent_vector | Класс concurrent_vector представляет собой класс контейнера последовательности, обеспечивающий доступ к элементам в случайном порядке. Позволяет конкурентно-безопасно выполнять операции добавления, доступа к элементам, доступа к итераторам и обхода итераторов. |
| Класс Context | Представляет абстракцию для контекста выполнения. |
| Класс context_self_unblock | Этот класс описывает исключение, которое создается при вызове метода Unblock объекта Context из того же контекста. Это означает попытку данного контекста разблокировать самого себя. |
| Класс context_unblock_unbalanced | Данный класс описывает исключение, создаваемое, если вызовы методов Block и Unblock объекта Context объединены неправильно. |
| Класс critical_section | Не реентерабельный мьютекс, который явно учитывает среду выполнения Concurrency Runtime. |
| Класс CurrentScheduler | Представляет абстракцию для текущего планировщика, связанного с вызывающим контекстом. |
| Класс default_scheduler_exists | Этот класс описывает исключение, возникающее при вызове метода Scheduler::SetDefaultSchedulerPolicy, когда планировщик по умолчанию уже существует в процессе. |
| Класс события | Событие с ручным сбросом, которое явно учитывает Параллельную среду выполнения. |
| Класс improper_lock | Этот класс описывает исключение, создаваемое, когда блокировка получена неправильно. |
| Класс improper_scheduler_attach | Этот класс описывает исключение, которое создается при вызове метода Attach на объекте Scheduler, который уже присоединен к текущему контексту. |
| Класс improper_scheduler_detach | Этот класс описывает исключение, создаваемое при вызове метода CurrentScheduler::Detach в контексте, который не присоединен ни к одному планировщику с помощью метода Attach объекта Scheduler. |
| Класс improper_scheduler_reference | Данный класс описывает исключение, которое создается при вызове метода Reference на объекте Scheduler, который завершает работу, из контекста, который не является частью этого планировщика. |
| Класс invalid_link_target | Данный класс описывает исключение, создаваемое, когда вызывается метод link_target блока обмена сообщениями и блок сообщений не может создать связь с целевым объектом. Это может быть результатом превышения числа ссылок, допустимых для блока сообщений, или попытки связать указанную цель с одним и тем же источником дважды. |
| Класс invalid_multiple_scheduling | Этот класс описывает исключение, создаваемое, если объект task_handle запланирован несколько раз с помощью метода run объекта task_group или structured_task_group без промежуточных вызовов любого из методов wait или run_and_wait. |
| Класс invalid_operation | Данный класс описывает исключение, возникающее при выполнении недопустимой операции, которая не описывается более точно другим типом исключения, создаваемым средой выполнения с параллелизмом. |
| Класс invalid_oversubscribe_operation | Этот класс описывает исключение, создаваемое при вызове метода Context::Oversubscribe с параметром _BeginOversubscription, имеющим значение false, без предварительного вызова метода Context::Oversubscribe с параметром _BeginOversubscription, имеющим значение true. |
| Класс invalid_scheduler_policy_key | Этот класс описывает исключение, создаваемое, когда конструктору объекта SchedulerPolicy передается неверный или неизвестный ключ или методу SetPolicyValue объекта SchedulerPolicy передается ключ, который должен быть изменен другими средствами, такими как метод SetConcurrencyLimits. |
| Класс invalid_scheduler_policy_thread_specification | Данный класс описывает исключение, создаваемое при попытке установить ограничения параллельности объекта SchedulerPolicy таким образом, чтобы значение ключа MinConcurrency было меньше, чем значение ключа MaxConcurrency. |
| Класс invalid_scheduler_policy_value | Этот класс описывает исключение, создаваемое, когда ключу политики объекта SchedulerPolicy присваивается недопустимое для этого ключа значение. |
| Класс ISource | Класс ISource является интерфейсом для всех блоков источников. Блоки источников распространяют сообщения в блоки ITarget. |
| Класс ITarget | Класс ITarget является интерфейсом для всех целевых блоков. Целевые блоки потребляют сообщения, предлагаемые им блоками ISource. |
| join-класс | Блок обмена сообщениями join — это упорядоченный блок propagator_block с несколькими источниками и одной целью, который объединяет сообщения типа T от каждого из своих источников. |
| Класс location | Абстракция физического расположения в аппаратном обеспечении. |
| Класс message | Основной конверт сообщения, содержащий полезные данные, передаваемые между блоками обмена сообщениями. |
| Класс message_not_found | Этот класс описывает исключение, создаваемое, когда блок обмена сообщениями не может найти запрошенное сообщение. |
| Класс message_processor | Класс message_processor — это абстрактный базовый класс для обработки объектов message. Упорядочивание сообщений не гарантируется. |
| Класс missing_wait | Этот класс описывает исключение, возникающее, когда задачи по-прежнему запланированы для объекта task_group или structured_task_group в момент выполнения деструктора этого объекта. Это исключение никогда не будет выброшено, если деструктор вызывается из-за завершения стека как результата исключения. |
| Класс multi_link_registry | Объект multi_link_registry представляет собой network_link_registry, управляющий несколькими блоками источников или целевыми блоками. |
| Класс multitype_join | Блок обмена сообщениями multitype_join — это блок с несколькими источниками и одной целью, который объединяет сообщения разных типов от каждого из своих источников и предлагает кортеж объединенных сообщений своему целевому объекту. |
| Класс nested_scheduler_missing_detach | Этот класс описывает исключение, которое выбрасывается, когда среда выполнения с параллелизмом обнаруживает, что вы не вызвали метод CurrentScheduler::Detach для контекста, который был присоединен ко второму планировщику с помощью метода Attach объекта Scheduler. |
| Класс network_link_registry | Абстрактный базовый класс network_link_registry управляет связями между блоками источников и целевыми блоками. |
| operation_timed_out класс | Этот класс описывает исключение, создаваемое по истечении времени ожидания операции. |
| Класс ordered_message_processor |
ordered_message_processor представляет собой message_processor, который позволяет блокам обмена сообщениями обрабатывать сообщения в порядке их получения. |
| Класс overwrite_buffer | Блок обмена сообщениями overwrite_buffer — это упорядоченный блок propagator_block с несколькими источниками и несколькими целями, который может хранить одно сообщение в один момент времени. Новые сообщения перезаписывают предыдущие. |
| Класс progress_reporter | Класс формирования отчетов о ходе выполнения позволяет формировать уведомления о ходе выполнения определенного типа. Каждый объект progress_reporter привязан к конкретному асинхронному действию или операции. |
| Класс propagator_block | Класс propagator_block — это абстрактный базовый класс для блоков сообщений, которые являются одновременно блоками источников и целевыми блоками. Он объединяет функциональные возможности обоих классов, source_block и target_block. |
| Класс reader_writer_lock | Блокировка чтения или записи на основе очередей с предпочтением записи только с локальным вращением. Блокировка предоставляет писателям доступ по принципу "первым пришел - первым получил" (FIFO) и лишает доступа читателей при постоянной нагрузке писателей. |
| Класс ScheduleGroup | Представляет абстракцию для группы графиков. Группы расписаний организуют набор связанных работ, которые выигрывают от планирования в непосредственной близости друг от друга: во времени (путем выполнения другой задачи в той же группе перед перемещением в другую группу) или в пространстве (путем выполнения нескольких элементов в той же группе в том же узле NUMA или физическом сокете). |
| Класс Scheduler | Представляет абстракцию для планировщика Concurrency Runtime. |
| Класс scheduler_not_attached | Этот класс описывает исключение, выбрасываемое, когда выполняется операция, требующая, чтобы планировщик был присоединен к текущему контексту, а его нет. |
| Класс scheduler_resource_allocation_error | Этот класс описывает исключение, возникающее из-за сбоя получения критического ресурса в исполняющей среде с параллелизмом. |
| Класс scheduler_worker_creation_error | Этот класс описывает исключение, которое создается из-за сбоя создания рабочего контекста выполнения в исполняющей среде с параллелизмом. |
| Класс SchedulerPolicy | Класс SchedulerPolicy содержит набор пар «ключ — значение» по одной для каждого элемента политики, управляющего поведением экземпляра планировщика. |
| Класс simple_partitioner | Класс simple_partitioner представляет статическое разделение диапазона, в котором итерации выполняются с помощью parallel_for. Разделитель делит диапазон на фрагменты таким образом, что каждый фрагмент имеет число итераций не менее указанного размера фрагмента. |
| Класс single_assignment | Блок передачи сообщений single_assignment — это многопользовательский, многозадачный, упорядоченный блок propagator_block, способный хранить единственный объект message, который можно записать только один раз. |
| Класс single_link_registry | Объект single_link_registry представляет собой network_link_registry, который управляет только одним блоком источника или одним целевым блоком. |
| source_block Class | Класс source_block — это абстрактный базовый класс только для блоков источника. Класс предоставляет основные функции управления соединениями, а также проверки распространенных ошибок. |
| Класс source_link_manager | Объект source_link_manager управляет сетевыми соединениями блоков обмена сообщениями с блоками ISource. |
| Класс static_partitioner | Класс static_partitioner представляет статическое разделение диапазона, в котором итерации выполняются с помощью parallel_for. Секционатор делит диапазон на столько блоков, сколько рабочих ролей доступно базовому планировщику. |
| Класс structured_task_group | Класс structured_task_group представляет коллекцию параллельной работы со сложной структурой. Можно поместить в очередь structured_task_group отдельные параллельные задачи с помощью объектов task_handle и ожидать их выполнения или отменить группу задач до завершения выполнения, что приведет к отмене всех задач, которые не начали выполнение. |
| Класс target_block | Класс target_block — это абстрактный базовый класс, который предоставляет основные функции управления соединениями и проверку ошибок только для целевых блоков. |
| Класс task (среда выполнения с параллелизмом) | Класс task библиотеки параллельных шаблонов (PPL). Объект task представляет работу, которая может быть выполнена асинхронно и параллельно с другими задачами и параллельной работой, созданной параллельными алгоритмами в среде выполнения с параллелизмом. При успешном завершении он выводи результат типа _ResultType. Задачи типа task<void> никакого результата не дают. Задачи можно приостанавливать и отменять независимо от других задач. Также возможно сочетание с другими задачами с помощью шаблонов продолжений (then), присоединений (when_all) и выбора (when_any). |
| Класс task_canceled (Задача_отменена) | Этот класс описывает исключение, которое создается уровнем задач PPL для принудительной отмены текущей задачи. Он также выбрасывается методом |
| Класс task_completion_event | Класс task_completion_event позволяет отложить выполнение задачи до выполнения условия или запустить задачу в ответ на внешнее событие. |
| Класс task_continuation_context | Класс task_continuation_context позволяет указать место продолжения выполнения задачи. Этот класс полезно использовать только в приложениях UWP. Для приложений, не являющихся приложениями Windows Runtime, контекст выполнения продолжения задачи определяется средой выполнения и не подлежит настройке. |
| Класс task_group | Класс task_group представляет коллекцию параллельных задач, которые можно ожидать или отменить. |
| Класс task_handle | Класс task_handle представляет отдельный параллельный рабочий элемент. Он инкапсулирует инструкции и данные, необходимые для выполнения части работы. |
| Класс task_options (Среда выполнения параллельных вычислений) | Представляет допустимые параметры для создания задачи |
| Класс timer | Блок обмена сообщениями timer — это блок source_block с одной целью, который может отправлять сообщение своей цели по истечении указанного периода времени или через заданные интервалы времени. |
| Класс Transformer | Блок обмена сообщениями transformer — это упорядоченный блок propagator_block с одной целью и несколькими источниками, который может принимать сообщения одного типа и хранить неограниченное число сообщений другого типа. |
| Класс unbounded_buffer | Блок обмена сообщениями unbounded_buffer — это упорядоченный блок propagator_block с несколькими целями и несколькими источниками, который может хранить неограниченное число сообщений. |
| Класс unsupported_os | Данный класс описывает исключение, которое создается при использовании неподдерживаемой операционной системы. |
Структуры
| Имя | Описание |
|---|---|
| Структура DispatchState | Структура DispatchState используется для передачи состояния в метод IExecutionContext::Dispatch. Она описывает обстоятельства, при которых метод Dispatch вызывается для интерфейса IExecutionContext. |
| Структура IExecutionContext | Интерфейс для контекста выполнения, который может выполняться на данном виртуальном процессоре и к которому может применяться совместное переключение контекста. |
| Структура IExecutionResource | Абстракция для потока выполнения на аппаратном уровне. |
| Структура IResourceManager | Интерфейс для диспетчера ресурсов среды параллельных вычислений. Это интерфейс, по которому планировщики взаимодействуют с диспетчером ресурсов. |
| Структура IScheduler | Интерфейс для абстракции планировщика работы. Диспетчер ресурсов среды выполнения с параллелизмом использует этот интерфейс для взаимодействия с планировщиками работы. |
| Структура ISchedulerProxy | Интерфейс, по которому планировщики взаимодействуют с диспетчером ресурсов среды выполнения с параллелизмом для согласования выделения ресурсов. |
| Структура IThreadProxy | Абстракция для потока выполнения. В зависимости от SchedulerType ключа политики, созданного вами планировщика, диспетчер ресурсов предоставит прокси, поддерживаемый либо обычным потоком Win32, либо потоком, планируемым на уровне пользовательского режима (UMS). Потоки UMS поддерживаются в 64-разрядных операционных системах Windows 7 и более поздних версий. |
| Структура ITopologyExecutionResource | Интерфейс к ресурсу выполнения процессов, как это определено диспетчером ресурсов. |
| Структура ITopologyNode | Интерфейс к узлу топологии, определяемый менеджером ресурсов. Узел содержит один или несколько ресурсов выполнения. |
| Структура IUMSCompletionList | Представляет список выполнения UMS. Когда поток UMS блокируется, отправляется назначенный планировщиком контекст планирования для принятия решения о том, что нужно запланировать для корня базового виртуального процессора, пока исходный поток заблокирован. Когда снимается блокировка исходного потока, операционная система ставит его в очередь списка выполнения, который доступен через этот интерфейс. Планировщик может запросить список выполнения в назначенном контексте планирования или в любом другом месте, где он ищет работу. |
| Структура IUMSScheduler | Интерфейс для абстракции планировщика заданий, который хочет, чтобы диспетчер ресурсов среды выполнения Concurrency Runtime предоставил ему пользовательские потоки, подлежащие планированию (UMS). Диспетчер ресурсов использует этот интерфейс для взаимодействия с планировщиками потоков UMS. Интерфейс IUMSScheduler наследует от интерфейса IScheduler . |
| Структура IUMSThreadProxy | Абстракция для потока выполнения. Если вы хотите, чтобы вашему планировщику были предоставлены потоки, доступные для планирования в режиме пользователя (UMS), установите значение элемента политики планировщика SchedulerKind на UmsThreadDefault и реализуйте интерфейс IUMSScheduler. Потоки UMS поддерживаются только в 64-разрядных операционных системах Windows 7 и более поздних версий. |
| Структура IUMSUnblockNotification | Представляет уведомление диспетчера ресурсов о том, что прокси-поток, который был заблокирован и спровоцировал возврат к заданной среде планирования планировщика, был разблокирован и готов к планированию. Этот интерфейс становится недействительным, как только связанный с прокси-потоком контекст выполнения, возвращенный из метода GetContext, перепланируется. |
| Структура IVirtualProcessorRoot | Абстракция для аппаратного потока, на котором может выполняться поток-прокси. |
| Структура scheduler_interface | Интерфейс планировщика |
| Структура scheduler_ptr (среда выполнения с параллелизмом) | Представляет указатель для планировщика. Этот класс существует, чтобы позволить указание общего срока существования с помощью shared_ptr или обычной ссылки, используя необработанный указатель. |
Перечисления
| Имя | Описание |
|---|---|
| agent_status | Допустимые состояния для объекта agent. |
| Agents_EventType | Типы событий, которые можно отслеживать с помощью функции трассировки, предоставляемой библиотекой агентов. |
| ConcRT_EventType | Типы событий, которые можно отслеживать с помощью функций трассировки, обеспечиваемых средой выполнения с параллелизмом. |
| Concrt_TraceFlags | Флаги трассировки для типов событий |
| CriticalRegionType | Тип критической области, внутри которой находится контекст. |
| DynamicProgressFeedbackType | Используется политикой DynamicProgressFeedback для описания того, будет ли к ресурсам планировщика применена повторная балансировка в соответствии со статистическими данными, полученными из планировщика, или только на основе перехода виртуальных процессоров в состояние бездействия и из него через вызовы методов Activate и Deactivate для интерфейса IVirtualProcessorRoot. Дополнительные сведения о доступных политиках планировщика см. в разделе PolicyElementKey. |
| join_type | Тип блока обмена сообщениями join. |
| message_status | Допустимые ответы на предложение объекта message блоку. |
| PolicyElementKey | Ключи политики, описывающие аспекты поведения планировщика. Каждый элемент политики описан с помощью пары «ключ — значение». Для получения дополнительной информации о политиках планировщика и их влиянии на планировщики, см. Планировщик задач. |
| SchedulerType | Используется политикой SchedulerKind для описания типа потоков, которые должен использовать планировщик для базовых контекстов выполнения. Дополнительные сведения о доступных политиках планировщика см. в разделе PolicyElementKey. |
| SchedulingProtocolType | Используется политикой SchedulingProtocol для описания того, какой алгоритм планирования будет использоваться для планировщика. Дополнительные сведения о доступных политиках планировщика см. в разделе PolicyElementKey. |
| Переключение состояния прокси | Используется для обозначения состояния прокси-потока, когда он выполняет совместное переключение контекста на другой прокси-поток. |
| статус группы задач | Описывает состояние выполнения объекта task_group или structured_task_group. Значение этого типа возвращается многочисленными методами, которые ожидают завершения задач, запланированных на выполнение в группе задач. |
| WinRTInitializationType | Используется политикой WinRTInitialization для описания того, будет ли среда выполнения Windows инициализирована в потоках планировщика для приложения, которое работает в операционных системах Windows с версии 8 или выше, и каким образом это будет выполняться. Дополнительные сведения о доступных политиках планировщика см. в разделе PolicyElementKey. |
Функции
| Имя | Описание |
|---|---|
| Функция Alloc | Выделяет блок памяти указанного размера из субраспределителя кэширования Concurrency Runtime. |
| Функция asend | Перегружен. Асинхронная операция отправки, которая назначает задачу для передачи данных в целевой блок. |
| Функция cancel_current_task | Отменяет выполняющуюся в данный момент задачу. Эту функцию можно вызывать из тела задачи, чтобы прервать выполнение задачи и перевести ее в состояние canceled.Вызов этой функции является неподдерживаемым сценарием, если вы не находитесь в теле task. Это приведет к неопределенному поведению, например, сбою или неотзывчивости в вашем приложении. |
| Функция create_async | Создает асинхронную конструкцию среды выполнения Windows на основе предоставленного пользователем лямбда-выражения или объекта функции. Тип возвращаемого значения create_async — один из следующих: IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ или IAsyncOperationWithProgress<TResult, TProgress>^, в зависимости от сигнатуры лямбда-выражения, переданного методу. |
| Функция create_task | Перегружен. Создает объект задачи PPL. Функция create_task может использоваться в любой ситуации, где бы вы использовали конструктор задач. Она предоставлена главным образом для удобства, поскольку позволяет использовать ключевое слово auto при создании задач. |
| Функция CreateResourceManager | Возвращает интерфейс, который представляет одноэлементный экземпляр диспетчера ресурсов среды выполнения с параллелизмом. Диспетчер ресурсов отвечает за назначение ресурсов планировщикам, которым требуется взаимодействовать друг с другом. |
| Функция DisableTracing | Отключает трассировку в среде Concurrency Runtime. Эта функция не рекомендуется использовать, поскольку ETW трассировка по умолчанию не зарегистрирована. |
| Функция EnableTracing | Включает трассировку в среде выполнения с параллелизмом. Эта функция устарела, поскольку трассировка событий ETW теперь включена по умолчанию. |
| Бесплатная функция | Освобождает блок памяти, ранее выделенный методом Alloc для кеширующего подраспределителя среды параллельного выполнения. |
| Функция get_ambient_scheduler (планировщик параллельных вычислений) | |
| Функция GetExecutionContextId | Возвращает уникальный идентификатор, который можно назначить контексту выполнения, реализующему интерфейс IExecutionContext. |
| Функция GetOSVersion | Возвращает версию операционной системы. |
| Функция GetProcessorCount | Возвращает число аппаратных потоков базовой системы. |
| Функция GetProcessorNodeCount | Возвращает число узлов NUMA или пакетов процессора в базовой системе. |
| Функция GetSchedulerId | Возвращает уникальный идентификатор, который можно назначить планировщику, реализующему интерфейс IScheduler. |
| Функция interruption_point | Создает точку отмены процесса. Если отмена выполняется в контексте вызова этой функции, это выбрасывает внутреннее исключение, которое прерывает текущую выполняемую параллельную работу. Если отмена не выполняется, функция ничего не делает. |
| Функция is_current_task_group_canceling | Возвращает значение, указывающее, находится ли группа задач, которая в данный момент выполняется встроенным образом в текущем контексте, в процессе активной отмены (или вскоре перейдет в это состояние). Обратите внимание, что если в текущем контексте нет групп задач, выполняющихся в режиме встроенного выполнения, будет возвращено значение false. |
| Функция make_choice | Перегружен. Конструирует блок сообщений choice из необязательного объекта Scheduler или ScheduleGroup и двух или более источников входных данных. |
| Функция make_greedy_join | Перегружен. Конструирует блок сообщений greedy multitype_join из необязательного объекта Scheduler или ScheduleGroup и двух или более источников входных данных. |
| Функция make_join | Перегружен. Конструирует блок сообщений non_greedy multitype_join из необязательного объекта Scheduler или ScheduleGroup и двух или более источников входных данных. |
| Функция make_task | Фабричный метод для создания объекта task_handle. |
| Функция parallel_buffered_sort | Перегружен. Упорядочивает элементы в указанном диапазоне в неубывающем порядке или в соответствии с критерием упорядочивания, заданным двоичным предикатом, параллельно. Эта функция семантически схожа с std::sort: она выполняет нестабильную сортировку на месте, основанную на сравнении, но требует дополнительного пространства O(n) и инициализации элементов по умолчанию. |
| Функция parallel_for | Перегружен.
parallel_for выполняет итерацию по диапазону индексов и выполняет предоставленную пользователем функцию в каждой итерации параллельно. |
| Функция parallel_for_each | Перегружен.
parallel_for_each применяет указанную функцию к каждому элементу в диапазоне параллельно. Эта функция семантически эквивалентна функции for_each в пространстве имен std, за исключением того, что итерация по элементам выполняется параллельно и порядок итерации не определен. Аргумент _Func должен поддерживать оператор вызова функции формы operator()(T), где параметр T является типом элемента контейнера, для которого выполняется итерация. |
| Функция parallel_invoke | Перегружен. Выполняет объекты функции, предоставленные в виде параметров, в параллельном режиме и блокирует их до завершения выполнения. Каждый объект функции может быть лямбда-выражением, указателем на функцию или любым объектом, который поддерживает оператор вызова функции с подписью void operator()(). |
| Функция parallel_radixsort | Перегружен. Располагает элементы в указанном диапазоне в неубывающем порядке, используя поразрядную сортировку. Это стабильная функция сортировки, для которой требуется функция проекции, способная проецировать сортируемые элементы в неподписанные ключи целочисленного типа. Для сортируемых элементов требуется инициализация по умолчанию. |
| Функция parallel_reduce | Перегружен. Параллельно вычисляет сумму всех элементов в указанном диапазоне путем вычисления последовательных частичных сумм или вычисляет результаты последовательных частичных сумм, полученных сходным образом с использованием указанной бинарной операции, отличной от суммирования.
parallel_reduce семантически аналогичен std::accumulate, но требует, чтобы бинарная операция была ассоциативна, а также значение идентификатора вместо начального значения. |
| Функция parallel_sort | Перегружен. Упорядочивает элементы в указанном диапазоне параллельно в порядке неубывания или согласно критерию сортировки, определенному двоичным предикатом. Эта функция семантически схожа с std::sort, так как она основана на сравнении, неустойчива, сортирует на месте. |
| Функция parallel_transform | Перегружен. Применяет заданный объект функции к каждому элементу в исходном диапазоне или к паре элементов из двух исходных диапазонов и параллельно копирует возвращаемые значения объекта функции в диапазон назначения. Эта функция семантически эквивалентна std::transform. |
| Функция receive | Перегружен. Общая реализация получения, позволяющая контексту ожидать данные строго из одного источника и фильтровать значения, которые принимаются. |
| Функция run_with_cancellation_token | Немедленно и синхронно выполняет объект функции в контексте заданного токена отмены. |
| Функция send | Перегружен. Синхронная операция отправки, которая ожидает принятия или отклонения сообщения получателем. |
| Функция set_ambient_scheduler (Concurrency Runtime) | |
| Функция set_task_execution_resources | Перегружен. Ограничивает ресурсы выполнения, используемые внутренними рабочими потоками Среды параллельных вычислений, до определенного набора привязанностей. Этот метод можно вызывать только до создания диспетчера ресурсов или между двумя периодами существования диспетчера ресурсов. Его можно вызывать многократно, если на момент вызова диспетчер ресурсов отсутствует. После задания ограничения сходства оно остаётся в силе до следующего допустимого вызова метода set_task_execution_resources.Предоставленная маска привязки не должна обязательно быть подмножеством маски привязки процесса. Аффинность процессов будет обновлена при необходимости. |
| Функция swap | Обменивает элементы двух объектов concurrent_vector. |
| функция task_from_exception (Concurrency Runtime) | |
| функция task_from_result (Concurrency Runtime) | |
| Функция Trace_agents_register_name | Связывает данное имя с блоком сообщений или агентом в трассировке событий Windows (ETW). |
| Функция try_receive | Перегружен. Общая реализация проверки-получения, позволяющая контексту выполнять поиск данных строго из одного источника и фильтровать значения, которые принимаются. Если данные не готовы, метод вернет значение False. |
| Функция ожидания | Приостанавливает текущий контекст на указанный период времени. |
| Функция when_all | Создает задачу, которая завершается успешно, если все задачи, предоставленные в качестве аргументов, завершаются успешно. |
| Функция when_any | Перегружен. Создает задачу, которая завершается успешно, если любая из задач, предоставленных в качестве аргументов, завершается успешно. |
Операторы
| Имя | Описание |
|---|---|
| оператор!= | Проверяет, не равен ли объект concurrent_vector слева от оператора объекту concurrent_vector справа от оператора. |
| оператор&> | Перегружен. Создает задачу, которая успешно завершится, когда обе задачи, предоставленные в качестве аргументов, успешно завершены. |
operator|| |
Перегружен. Создает задачу, которая завершается успешно, если любая из задач, предоставленных в качестве аргументов, завершается успешно. |
| оператор< | Проверяет, меньше ли объект concurrent_vector слева от оператора, чем объект concurrent_vector справа от оператора. |
| operator<= | Проверяет, меньше ли объект concurrent_vector слева от оператора, чем объект concurrent_vector справа от оператора, или равен ему. |
| operator== | Проверяет равенство объекта concurrent_vector слева от оператора объекту concurrent_vector справа от оператора. |
| оператор> | Проверяет больше ли объект concurrent_vector слева от оператора, чем объект concurrent_vector справа от оператора. |
| operator>= | Проверяет, является ли объект concurrent_vector, расположенный слева от оператора, больше или равен объекту concurrent_vector, находящемуся справа. |
Константы
| Имя | Описание |
|---|---|
| AgentEventGuid | GUID категории ({B9B5B78C-0713-4898-A21A-C67949DCED07}), описывающий события ETW, испускаемые библиотекой Agentes в среде выполнения параллелизма. |
| ChoreEventGuid | GUID категории, описывающий события ETW, инициированные Библиотекой параллельных вычислений и непосредственно связанные с задачами или подзадачами. |
| ConcRT_ProviderGuid | GUID предоставителя ETW для параллельной среды выполнения. |
| CONCRT_RM_VERSION_1 | Указывает на поддержку интерфейса диспетчера ресурсов, определенного в Visual Studio 2010. |
| ConcRTEventGuid | GUID категории, описывающий события ETW, инициированные Concurrency Runtime и не детализированные другой категорией. |
| ContextEventGuid | GUID категории, описывающий события ETW, инициированные средой выполнения Concurrency Runtime, которые непосредственно связаны с контекстами. |
| COOPERATIVE_TIMEOUT_INFINITE | Значение, указывающее, что время ожидания никогда не должно истечь. |
| COOPERATIVE_WAIT_TIMEOUT | Значение, указывающее, что время ожидания истекло. |
| INHERIT_THREAD_PRIORITY | Специальное значение для ключа политики ContextPriority, указывающее, что приоритет потока всех контекстов в планировщике должен быть таким же, как приоритет потока, создавшего планировщик. |
| LockEventGuid | GUID категории, описывающий события ETW, инициированные параллельной средой выполнения, которые непосредственно связаны с блокировками. |
| MaxExecutionResources | Специальное значение для ключей политики MinConcurrency и MaxConcurrency. По умолчанию соответствует числу аппаратных потоков на компьютере при отсутствии других ограничений. |
| PPLParallelForeachEventGuid | GUID категории, описывающий ETW события, инициированные Concurrency Runtime, которые непосредственно связаны с использованием функции parallel_for_each. |
| PPLParallelForEventGuid | GUID категории, описывающий ETW события, инициированные Concurrency Runtime, которые непосредственно связаны с использованием функции parallel_for. |
| PPLParallelInvokeEventGuid | GUID категории, описывающий ETW события, инициированные Concurrency Runtime, которые непосредственно связаны с использованием функции parallel_invoke. |
| ResourceManagerEventGuid | GUID категории, описывающий события ETW (трассировки событий Windows), инициируемые Concurrency Runtime, которые непосредственно связаны с диспетчером ресурсов. |
| ScheduleGroupEventGuid | GUID категории, описывающий события ETW, инициированные Concurrency Runtime и непосредственно связанные с группами расписаний. |
| SchedulerEventGuid | GUID категории, описывающий события ETW, инициированные средой выполнения Concurrency Runtime, которые непосредственно связаны с действиями планировщика. |
| VirtualProcessorEventGuid | GUID категории, описывающий события ETW, генерированные Средой выполнения Concurrency, которые непосредственно связаны с виртуальными процессорами. |
Требования
Заголовок: 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