Пространство имен concurrency

Пространство имен Concurrency содержит классы и функции, предоставляющие доступ к среде выполнения с параллелизмом, которая является платформой параллельного программирования для C++. Для получения дополнительной информации см. Среда выполнения с параллелизмом.

namespace concurrency;

Члены

Пространства имен

Имя

Описание

concurrency::extensibility Namespace

Определения типов

Имя

Описание

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.

Класс cancellation_token_registration

Класс cancellation_token_registration представляет уведомление обратного вызова из cancellation_token. При использовании метода register на cancellation_token для получения уведомления о времени выполнения отмены объект cancellation_token_registration возвращается как дескриптор для обратного вызова, чтобы вызывающий код мог запросить, чтобы определенный обратный вызов больше не выполнялся с помощью метода deregister.

Класс cancellation_token_source

Класс cancellation_token_source представляет возможность отмены некоторой отменяемой операции.

Класс choice

Блок сообщений choice — многоисточниковый одноцелевой блок, который представляет взаимодействие потока управления с набором источников. Блок выбора будет ожидать любой из нескольких источников для создания сообщения и распространит индекс источника, создавшего сообщение.

Класс combinable

Объект combinable<T> предназначен для предоставления потокозакрытых копий данных для выполнения свободных от блокировок потоколокальных подвычислений в процессе параллельных алгоритмов. В конце параллельной операции потокозакрытые подвыражения могут быть объединены в окончательный результат. Этот класс может использоваться вместо общей переменной и может привести к улучшение производительности, если бы иначе на общей переменной была сильная конкуренция.

Класс concurrent_priority_queue

Класс concurrent_priority_queue — это контейнер, который позволяет нескольким потокам параллельно класть и извлекать элементы. Элементы извлекаются в порядке приоритета, определяемого функтором, предоставленным в качестве аргумента шаблона.

Класс concurrent_queue

Класс concurrent_queue является классом-контейнером последовательности, позволяющим доступ "первый вошел — первый вышел" к его элементам. Он позволяет ограниченный набор параллельно-безопасных операций, таких как push и try_pop/

Класс concurrent_unordered_map

Класс concurrent_unordered_map — это безопасный в режиме параллелизма контейнер, который управляет последовательностью переменной длины элементов типа std::pair<const _Key_type, _Element_type>. Последовательность представлена таким образом, который позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора.

Класс concurrent_unordered_multimap

Класс concurrent_unordered_multimap — это безопасный в режиме параллелизма контейнер, который управляет последовательностью переменной длины элементов типа std::pair<const _Key_type, _Element_type>. Последовательность представлена таким образом, который позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора.

Класс concurrent_unordered_multiset

Класс concurrent_unordered_multiset — это безопасный в режиме параллелизма контейнер, который управляет последовательностью элементов типа _Key_type переменной длины. Последовательность представлена таким образом, который позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора.

Класс concurrent_unordered_set

Класс concurrent_unordered_set — это безопасный в режиме параллелизма контейнер, который управляет последовательностью элементов типа _Key_type переменной длины. Последовательность представлена таким образом, который позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора.

Класс concurrent_vector

Класс concurrent_vector является классом-контейнером последовательности, позволяющим произвольный доступ к любому элементу. Позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора.

Класс Context

Представляет абстракцию контекста выполнения.

Класс context_self_unblock

Данный класс описывает исключение, которое создается при вызове метода Unblock объекта Context из одного и того же контекста. Это означает попытку данного контекста снять с себя блокировку.

Класс context_unblock_unbalanced

Данный класс описывает исключение, выдающееся каждый раз, когда вызовы к методам Block и Unblock объекта Context объединены неправильно.

Класс critical_section

Не реентрабельный мьютекс, который учитывает явным образом среду параллелизма.

Класс CurrentScheduler

Представляет абстракцию для текущего планировщика, связанного с вызывающим контекстом.

Класс default_scheduler_exists

Данный класс описывает исключение, которое выдается, когда метод Scheduler::SetDefaultSchedulerPolicy вызывается, когда планировщик по умолчанию уже существует внутри процесса.

Класс event

Событие ручного сброса, которое учитывает явным образом среду параллелизма.

Класс 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, который сочетает сообщения типа _Type от каждого из своих источников.

Класс 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 позволяет создавать уведомления определенного типа о ходе выполнения. Каждый объект progress_reporter привязан к конкретному асинхронному действию или операции.

Класс propagator_block

Класс propagator_block является абстрактным базовым классом для блоков сообщений, которые одновременно исходные и целевые. Объединяет функциональные возможности обоих классов source_block и target_block.

Класс reader_writer_lock

Блокировка чтения-записи на основе очереди с предпочтением записи со строго локальной циклической работой. Блокировка предоставляет доступ "первым вошел — первым вышел" для писателей и исключает доступ читателей под постоянной нагрузкой со стороны писателей.

Класс ScheduleGroup

Представляет абстракцию группы расписания. Группы расписаний организуют набор связанных работ, которые дают преимущества планирования вблизи друг от друга, выполняя другую задачу в той же группе перед перемещением другую группу или пространственно, выполняя несколько элементов в пределах одной и той же группы на одном узле NUMA или физическом сокете.

Класс Scheduler

Представляет абстракцию для планировщика среды параллелизма.

Класс 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

Класс 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 (среда выполнения с параллелизмом)

Класс библиотеки параллельных шаблонов (PPL) task. Объект task представляет работу, которую можно выполнять асинхронно, и одновременно с другими задачи и параллельной работой, созданной параллельными алгоритмами среды выполнения с параллелизмом. Он предоставляет результат типа _ResultType при успешном завершении. Задачи типа task<void> не дают никакого результата. Задачу можно подождать и отменить независимо от любых других задач. Его также можно составить с другими задачами с помощью продолжений(then) и соединения(when_all) и шаблонов выбора (when_any).

Класс task_canceled

Этот класс описывает исключение, которое создается уровнем задач PPL для принудительной отмены текущей задачи. Оно также создается методом get() для задачи, для отмененной задачи.

Класс task_completion_event

Класс task_completion_event позволяет, чтобы отложить выполнение задачи до тех пор, пока не будет выполняться условие, или запустить задачу в ответ на внешнее событие.

Класс task_continuation_context

Класс task_continuation_context позволяет указать, где требуется выполнить продолжение. Только полезно использовать этот класс из приложения Магазина Windows. Для приложений не для Магазина Windows контекст выполнения продолжения задачи определяется средой выполнения, а не настраивается.

Класс 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

Интерфейс к абстракции планировщика работы, который хочет, чтобы диспетчер ресурсов среда параллелизма передал ему планируемые пользовательским режимом потоки (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

Типы событий, которые могут быть отслежены с помощью возможностей трассировки, предоставляемые Библиотекой Agents.

Перечисление ConcRT_EventType

Типы событий, которые могут быть отслежены при использовании возможности трассировки, предоставляемой средой параллелизма.

Перечисление Concrt_TraceFlags

Флажки трассировки для типов событий

Перечисление CriticalRegionType

Тип критической области, в которой контекст находится.

Перечисление DynamicProgressFeedbackType

Используется политикой DynamicProgressFeedback для описания, будет ли быть перебалансированы ресурсы для планировщика согласно статистическим сведениям, собранным из планировщика или только на основе виртуальных процессоров, переходящих из и в состояния простоя через вызовы методов Activate и Deactivate на интерфейсе IVirtualProcessorRoot. Дополнительные сведения о доступных политиках планировщиков см. в разделе Перечисление PolicyElementKey.

Перечисление join_type

Тип блока сообщений join.

Перечисление message_status

Допустимые ответы для предложения объекта message к блоку.

Перечисление PolicyElementKey

Ключи политики, описывающие аспекты поведения планировщика. Каждый элемент политики описан парой ключ значение. Для получения дополнительных сведений о политиках планировщика и их влияние на планировщики см. раздел Планировщик задач (среда выполнения с параллелизмом).

Перечисление SchedulerType

Используется политикой SchedulerKind для описания типа потоков, которые следует использовать планировщику для базовых контекстов выполнения. Дополнительные сведения о доступных политиках планировщиков см. в разделе Перечисление PolicyElementKey.

Перечисление SchedulingProtocolType

Используется политикой SchedulingProtocol для описания, какой алгоритм планирования будет использоваться для планировщика. Дополнительные сведения о доступных политиках планировщиков см. в разделе Перечисление PolicyElementKey.

Перечисление SwitchingProxyState

Используется для обозначения состояния прокси-потока, когда он выполняет совместное контекстное переключение на другой прокси-поток.

Перечисление task_group_status

Описывает состояние выполнения объекта task_group или structured_task_group. Значение этого типа возвращается многочисленными методами, которые ожидают выполнения задач, запланированных для завершения группой задач.

Перечисление WinRTInitializationType

Используется политикой WinRTInitialization для описания того, как среда выполнения Windows будет инициализирована с потоками планировщика для приложения, которое работает в операционных системах Windows с версии 8 или выше. Дополнительные сведения о доступных политиках планировщиков см. в разделе Перечисление PolicyElementKey.

Функции

Имя

Описание

Функция Alloc

Выделяет блок памяти указанного размера из подраспределителя кэширования среды параллелизма.

Функция asend

Перегружен. Операция асинхронной передачи, которая планирует задачу для распространения данных в целевой блок.

Функция cancel_current_task

Отменяет выполняющуюся в данный момент задачу. Эту функцию можно вызывать из тела задачи, чтобы прервать выполнение задачи и перевести ее в состояние canceled. Хотя ее можно использовать в качестве отклика для функции is_task_cancellation_requested, можно также использовать ее самостоятельно, чтобы инициировать отмену выполняющейся в настоящее время задачи.

Вызов этой функции является неподдерживаемым сценарием, если вы не находитесь в теле task. Такие действия приведут к неопределенному поведению, например сбою или зависанию в приложении.

Функция create_async

Создает асинхронную конструкцию среды выполнения Windows на основе предоставленного пользователем лямбда-выражения или объекта функции. Возвращаемый тип create_async — один из следующих: IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ или IAsyncOperationWithProgress<TResult, TProgress>^, в зависимости от сигнатуры лямбда-выражения, переданного методу.

Функция create_task

Перегружен. Создает объект задачи PPL. create_task можно использовать везде, где вы использовали бы конструктор задачи. Предоставляется, главным образом, для удобства, так как она позволяет использовать ключевое слово auto для создания задач.

Функция CreateResourceManager

Возвращает интерфейс, который представляет одиночный экземпляр диспетчера ресурсов среда среды выполнения параллелизма. Диспетчер ресурсов является ответственным за назначение ресурсов планировщикам, которым необходимо взаимодействовать друг с другом.

Функция DisableTracing

Отключает трассировку в среде выполнения блокировки. Эта функция не рекомендуется, поскольку трассировка событий Windows по умолчанию не регистрируется.

Функция EnableTracing

Включает трассировку в среде выполнения блокировки. Эта функция не рекомендуется, поскольку трассировка событий Windows теперь по умолчанию включена.

Функция Free

Освобождает блок памяти, выделенной ранее методом Alloc подраспределителю кэширования среды параллелизма.

Функция get_ambient_scheduler (среда выполнения с параллелизмом)

Функция GetExecutionContextId

Возвращает уникальный идентификатор, который может быть назначен контексту выполнения, который реализует интерфейс IExecutionContext.

Функция GetOSVersion

Возвращает версию операционной системы.

Функция GetProcessorCount

Возвращает число потоков оборудования в базовой системе.

Функция GetProcessorNodeCount

Возвращает число узлов NUMA или пакеты процессора в базовой системе.

Функция GetSchedulerId

Возвращает уникальный идентификатор, который может быть назначен планировщику, который реализует интерфейс IScheduler.

Функция interruption_point

Создает точку прерывания для отмены. Если отмена выполняется в контексте, где эта функция вызывается, это создает внутреннее исключение, которое прерывает текущую параллельную работу. Если отмена не выполняется, то функция не выполняет никаких действий.

Функция is_current_task_group_canceling

Возвращает значение, указывающее, находится ли группа задач, которая выполняется в данный момент встроено в текущем контексте, в процессе активной отмены (или будет вскоре). Обратите внимание, что если нет групп задач, выполняющихся в текущем контексте, будет возвращено false.

Функция is_task_cancellation_requested

Возвращает значение, указывающее, получила ли выполняющаяся в данный момент задача запрос на отмену своего выполнения. Отмена запрашивается в задаче, если задача была создана с токеном отмены и источник токенов, связанной с этим токеном, отменен.

Функция 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 (среда выполнения с параллелизмом)

Функция set_task_execution_resources

Перегружен. Ограничить ресурсы выполнения, используемые внутренними рабочими потоками среды выполнения с параллелизмом, определенным набором сходства.

Этот метод допустим для вызова только до того, как диспетчер ресурсов был создан, или между двумя периодами существования диспетчера ресурсов. Он может быть вызван несколько раз, если диспетчер ресурсов не существует на момент вызова. После установления ограничения сходства, оно будет оставаться действительным до следующего допустимого вызова метода set_task_execution_resources.

Предоставленная маска сходства не обязана быть подмножеством маски сходства процесса. Сходство процесса обновляется при необходимости.

Функция swap

Обменивает элементы двух объектов concurrent_vector.

Функция task_from_exception (среда выполнения с параллелизмом)

Функция task_from_result (среда выполнения с параллелизмом)

Функция Trace_agents_register_name

Сопоставляет данное имя блоку сообщений или агенту в трассировки событий Windows.

Функция try_receive

Перегружен. Реализация общей попытки получения, позволяющая контексту искать данные из ровно одного источника и фильтровать значения, которые принимаются. Если данные не готовы, метод вернет значение false.

Функция wait

Приостанавливает текущий контекст на заданной промежутка времени.

Функция when_all

Создает задачу, которая завершается успешно, если все задачи, предоставленные в качестве аргументов, завершаются успешно.

Функция when_any

Перегружен. Создает задачу, которая будет выполнена успешно, если любая из задача, предоставленных как аргументы, выполнена успешно.

Операторы

Имя

Описание

Оператор operator!=

Проверяет, равен ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны.

Оператор operator&&

Перегружен. Создает задачу, которая завершается успешно, если обе задачи, предоставленные в качестве аргументов, завершаются успешно.

Оператор operator||

Перегружен. Создает задачу, которая будет выполнена успешно, если любая из задач, представленная в качетстве аргумента, выполнена успешно.

Оператор operator<

Проверяет, меньше ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны.

Оператор operator<=

Проверяет, меньше либо равен ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны.

Оператор operator==

Проверяет, равен ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны.

Оператор operator>

Проверяет, больше ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны.

Оператор operator>=

Проверяет, больше ли равен ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны.

Константы

Имя

Описание

Константа AgentEventGuid

Категория GUID ({B9B5B78C-0713-4898-A21A-C67949DCED07}), описывающая события трассировки Windows, заменяется библиотекой агентов среды выполнения с параллелизмом.

Константа ChoreEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с делами или задачами.

Константа ConcRT_ProviderGuid

Поставщик ETW GUID для среды параллелизма.

Константа CONCRT_RM_VERSION_1

Указывает поддержку интерфейса диспетчера ресурсов, определенные в Visual Studio 2010.

Константа ConcRTEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые не описаны подробнее другой категорией.

Константа ContextEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с контекстами.

Константа COOPERATIVE_TIMEOUT_INFINITE

Значение, указывающее, что время ожидания никогда не должно кончаться.

Константа COOPERATIVE_WAIT_TIMEOUT

Значение, указывающее, что время ожидания кончилось.

Константа INHERIT_THREAD_PRIORITY

Особое значение для ключа политики ContextPriority указывающее, что приоритет потока всех контекстов в планировщике должен быть тем же, что у потока, который создал планировщик.

Константа LockEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с блокировками.

Константа MaxExecutionResources

Специальное значение для ключей политики MinConcurrency и MaxConcurrency. По умолчанию число аппаратных потоков на компьютере в случае отсутствия других ограничений.

Константа PPLParallelForeachEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с использованием функции parallel_for_each.

Константа PPLParallelForEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с использованием функции parallel_for.

Константа PPLParallelInvokeEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с использованием функции parallel_invoke.

Константа ResourceManagerEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с диспетчером ресурсов.

Константа ScheduleGroupEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с группами расписания.

Константа SchedulerEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с действием расписания.

Константа VirtualProcessorEventGuid

Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с виртуальными процессорами.

Требования

Заголовок: 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

См. также

Другие ресурсы

Справочные материалы (среда выполнения с параллелизмом)