Пространство имен 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 похож на класс static_partitioner, но повышает сходство кэша с помощью сопоставления поддиапазонов в рабочий поток. Он может значительно повысить производительность, если цикл повторно выполняется над одним и тем же набором данных, и данные подходят для кэша. Обратите внимание, что один и тот же объект affinity_partitioner должен использоваться с последующими итерациями параллельного цикла, выполняемых над указанным набором данных, для извлечения выгоды из расположения данных. |
|
Класс предназначен для использования как базовый класс для всех независимых агентов. Используется для скрытия состояния от других агентов и взаимодействия с помощью передачи сообщений. |
|
Класс auto_partitioner представляет метод разделения, который алгоритмы parallel_for, parallel_for_each и parallel_transform используют по умолчанию для разделения обрабатываемого диапазона. Этот метод разделения диапазона обеспечивает как секционирование для распределения нагрузки, так и отмену в циклах. |
|
Данный класс описывает исключение, которое выдается, когда блок обмена сообщениями получает указатель на целевой объект, который неверен для выполняемой операции. |
|
Блок обмена сообщениями call — многоисточниковый, упорядоченный target_block, который вызывает заданную функцию при приеме сообщения. |
|
Класс cancellation_token представляет возможность определить, получала ли некоторая операция запрос на отмену. Заданный токен можно связать с task_group, structured_task_group или task для предоставления неявной отмены. Его также можно опрашивать на предмет отмены или зарегистрировать обратный вызов для той ситуации, когда отменяется связанный cancellation_token_source. |
|
Класс cancellation_token_registration представляет уведомление обратного вызова из cancellation_token. При использовании метода register на cancellation_token для получения уведомления о времени выполнения отмены объект cancellation_token_registration возвращается как дескриптор для обратного вызова, чтобы вызывающий код мог запросить, чтобы определенный обратный вызов больше не выполнялся с помощью метода deregister. |
|
Класс cancellation_token_source представляет возможность отмены некоторой отменяемой операции. |
|
Блок сообщений choice — многоисточниковый одноцелевой блок, который представляет взаимодействие потока управления с набором источников. Блок выбора будет ожидать любой из нескольких источников для создания сообщения и распространит индекс источника, создавшего сообщение. |
|
Объект combinable<T> предназначен для предоставления потокозакрытых копий данных для выполнения свободных от блокировок потоколокальных подвычислений в процессе параллельных алгоритмов. В конце параллельной операции потокозакрытые подвыражения могут быть объединены в окончательный результат. Этот класс может использоваться вместо общей переменной и может привести к улучшение производительности, если бы иначе на общей переменной была сильная конкуренция. |
|
Класс concurrent_priority_queue — это контейнер, который позволяет нескольким потокам параллельно класть и извлекать элементы. Элементы извлекаются в порядке приоритета, определяемого функтором, предоставленным в качестве аргумента шаблона. |
|
Класс concurrent_queue является классом-контейнером последовательности, позволяющим доступ "первый вошел — первый вышел" к его элементам. Он позволяет ограниченный набор параллельно-безопасных операций, таких как push и try_pop/ |
|
Класс concurrent_unordered_map — это безопасный в режиме параллелизма контейнер, который управляет последовательностью переменной длины элементов типа std::pair<const _Key_type, _Element_type>. Последовательность представлена таким образом, который позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора. |
|
Класс concurrent_unordered_multimap — это безопасный в режиме параллелизма контейнер, который управляет последовательностью переменной длины элементов типа std::pair<const _Key_type, _Element_type>. Последовательность представлена таким образом, который позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора. |
|
Класс concurrent_unordered_multiset — это безопасный в режиме параллелизма контейнер, который управляет последовательностью элементов типа _Key_type переменной длины. Последовательность представлена таким образом, который позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора. |
|
Класс concurrent_unordered_set — это безопасный в режиме параллелизма контейнер, который управляет последовательностью элементов типа _Key_type переменной длины. Последовательность представлена таким образом, который позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора. |
|
Класс concurrent_vector является классом-контейнером последовательности, позволяющим произвольный доступ к любому элементу. Позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора. |
|
Представляет абстракцию контекста выполнения. |
|
Данный класс описывает исключение, которое создается при вызове метода Unblock объекта Context из одного и того же контекста. Это означает попытку данного контекста снять с себя блокировку. |
|
Данный класс описывает исключение, выдающееся каждый раз, когда вызовы к методам Block и Unblock объекта Context объединены неправильно. |
|
Не реентрабельный мьютекс, который учитывает явным образом среду параллелизма. |
|
Представляет абстракцию для текущего планировщика, связанного с вызывающим контекстом. |
|
Данный класс описывает исключение, которое выдается, когда метод Scheduler::SetDefaultSchedulerPolicy вызывается, когда планировщик по умолчанию уже существует внутри процесса. |
|
Событие ручного сброса, которое учитывает явным образом среду параллелизма. |
|
Данный класс описывает исключение, которое выдается, когда блокировка получена неправильно. |
|
Данный класс описывает исключение, которое генерируется каждый раз, когда вызывается метод Attach на объекте Scheduler, который уже присоединен к текущему контексту. |
|
Данный класс описывает исключение, которое выдается каждый раз, когда вызывается метод CurrentScheduler::Detach в контексте, который не присоединен к планировщику через метод Attach объекта Scheduler. |
|
Данный класс описывает исключение, которое создается при каждом вызове метода Reference на объекте Scheduler, который завершает работу, из контекста, который не является частью этого планировщика. |
|
Данный класс описывает исключение, которое создается, когда вызывается метод link_target блока обмена сообщениями и блок и не может создать связь с целевым объектом. Это может быть результатом превышения числа ссылок, допустимых для блока сообщений, или попытки связать указанную цель с одним и тем же источником дважды. |
|
Данный класс описывает исключение, возникающее когда объект task_handle запланирован несколько раз с помощью метода run объекта task_group или structured_task_group без промежуточных вызовов метода wait или run_and_wait. |
|
Данный класс описывает исключение, возникающее при выполнении недопустимой операции, которая не описывается более точно другим типом исключения, создаваемым средой выполнения с параллелизмом. |
|
Данный класс описывает исключение, возникающее при вызове метода Context::Oversubscribe с параметром _BeginOversubscription, равным false без предварительного вызова метода Context::Oversubscribe с параметром _BeginOversubscription, имеющим значение true. |
|
Данный класс описывает исключение, которое выдается каждый раз, когда конструктору объекта SchedulerPolicy передан неправильный или неизвестный ключ или метод SetPolicyValue объекта SchedulerPolicy получил ключ, который должен быть изменен через другие средства, такие как метод SetConcurrencyLimits. |
|
Данный класс описывает исключение, которое генерируется, когда сделана попытка установить ограничения параллелизма объекта SchedulerPolicy таким образом, что значение ключа MinConcurrency меньше, чем значение ключа MaxConcurrency. |
|
Данный класс описывает исключение, которое выдается, когда ключу политики объекта SchedulerPolicy присвоено недопустимое значение для этого ключа. |
|
Класс ISource является интерфейсом для всех исходных блоков. Блоки источников распространяют сообщения блокам ITarget. |
|
Класс ITarget является интерфейсом для всех целевых блоков. Целевые блоки потребляют сообщения, предлагаемые им блоками ISource. |
|
Блок сообщений join — многоисточниковый одноцелевой упорядоченный propagator_block, который сочетает сообщения типа _Type от каждого из своих источников. |
|
Абстракция фактического месторасположения на оборудовании. |
|
Основной конверт сообщения, содержащий полезную нагрузку данных, передаваемую между блоками обмена сообщениями. |
|
Данный класс описывает исключение, выдающееся каждый раз, когда блок обмена сообщениями не может найти запрошенное сообщение. |
|
Класс message_processor является абстрактным базовым классом для обработки объектов message. Нет никакой гарантии на порядок сообщений. |
|
Данный класс описывает исключение, которое выдается, когда имеются задачи, по-прежнему запланированные объекту task_group или structured_task_group во время выполнения деструктора этого объекта. Никогда не будет создано это исключение, если деструктор достигается из-за очистки стека в результате исключения. |
|
Объект multi_link_registry — это network_link_registry, который управляет несколькими исходными блоками или несколькими целевыми блоками. |
|
Блок сообщений multitype_join — многоисточниковый одноцелевой упорядоченный блок сообщений, который сочетает сообщения различных типов от каждого из своих источников и предлагает целевым объектам кортеж объединенных сообщений. |
|
Данный класс описывает исключение, которое возникает, когда среда выполнения параллелизма обнаруживает, что вы не вызвали метод CurrentScheduler::Detach на контекст, который присоединен к второй планировщик через метод Attach объекта Scheduler. |
|
Абстрактный базовый класс network_link_registry управляет связями между исходными и целевыми блоками. |
|
Данный класс описывает исключение, возникающее когда время операции истекло. |
|
ordered_message_processor является message_processor, позволяющим блокам сообщений обрабатывать сообщения в том порядке, в котором они были получены. |
|
Блок сообщений overwrite_buffer — многоцелевой, многоисточниковый, упорядоченный propagator_block, способный хранить одно сообщение за раз. Новые сообщения перезаписывают предыдущие. |
|
Класс progress_reporter позволяет создавать уведомления определенного типа о ходе выполнения. Каждый объект progress_reporter привязан к конкретному асинхронному действию или операции. |
|
Класс propagator_block является абстрактным базовым классом для блоков сообщений, которые одновременно исходные и целевые. Объединяет функциональные возможности обоих классов source_block и target_block. |
|
Блокировка чтения-записи на основе очереди с предпочтением записи со строго локальной циклической работой. Блокировка предоставляет доступ "первым вошел — первым вышел" для писателей и исключает доступ читателей под постоянной нагрузкой со стороны писателей. |
|
Представляет абстракцию группы расписания. Группы расписаний организуют набор связанных работ, которые дают преимущества планирования вблизи друг от друга, выполняя другую задачу в той же группе перед перемещением другую группу или пространственно, выполняя несколько элементов в пределах одной и той же группы на одном узле NUMA или физическом сокете. |
|
Представляет абстракцию для планировщика среды параллелизма. |
|
Данный класс описывает исключение, которое создается при каждом выполнении операции, требующей, чтобы планировщик был присоединен к текущему контексту, если он не присоединен. |
|
Данный класс описывает исключение, возникающее из-за ошибки получить критический ресурс в среде выполнения параллелизма. |
|
Этот класс описывает исключение, которое генерируется из-за сбоя создания рабочего контекста выполнения в среде выполнения с параллелизмом. |
|
Класс SchedulerPolicy содержит набор пар "ключ—значение", одна для каждого элемента политики, контролирующего поведение экземпляра планировщика. |
|
Класс simple_partitioner представляет статическое разделение диапазона, обрабатываемого parallel_for. Модуль разделения делит диапазон на блоки так, что каждый блок имеет по крайней мере число итераций, заданных размером блока. |
|
Блок сообщений single_assignment — многоцелевой, многоисточниковый, упорядоченный propagator_block, способный хранить одно записываемое один раз message. |
|
Объект single_link_registry — это network_link_registry, управляющий только одним исходным или целевым блоком. |
|
Класс source_block является абстрактным базовым классом для блоков, являющихся только источниками. Класс предоставляет основные функциональные возможности управления ссылками, а также распространенные проверки ошибок. |
|
Объект source_link_manager управляет ссылками сети блока сообщений на блоки ISource. |
|
Класс static_partitioner представляет статическое разделение диапазона, обрабатываемого parallel_for. Разделитель делит диапазон на количество блоков, соответствующее количество работников, доступных базовому планировщику. |
|
Класс structured_task_group представляет высокоструктурированную коллекцию параллельной работы. Отдельные параллельные задачи можно ставить в очередь structured_task_group с помощью объектов task_handle и дождаться их завершения или отменить группу задач до завершения их выполнения, что прервет все задачи, которые не начали выполнение. |
|
Класс target_block является абстрактным базовым классом, который предоставляет основные функции управления ссылками и проверку ошибок для блоков, являющихся только целевыми. |
|
Класс библиотеки параллельных шаблонов (PPL) task. Объект task представляет работу, которую можно выполнять асинхронно, и одновременно с другими задачи и параллельной работой, созданной параллельными алгоритмами среды выполнения с параллелизмом. Он предоставляет результат типа _ResultType при успешном завершении. Задачи типа task<void> не дают никакого результата. Задачу можно подождать и отменить независимо от любых других задач. Его также можно составить с другими задачами с помощью продолжений(then) и соединения(when_all) и шаблонов выбора (when_any). |
|
Этот класс описывает исключение, которое создается уровнем задач PPL для принудительной отмены текущей задачи. Оно также создается методом get() для задачи, для отмененной задачи. |
|
Класс task_completion_event позволяет, чтобы отложить выполнение задачи до тех пор, пока не будет выполняться условие, или запустить задачу в ответ на внешнее событие. |
|
Класс task_continuation_context позволяет указать, где требуется выполнить продолжение. Только полезно использовать этот класс из приложения Магазина Windows. Для приложений не для Магазина Windows контекст выполнения продолжения задачи определяется средой выполнения, а не настраивается. |
|
Класс task_group представляет коллекцию параллельные работы которые могут подождать или быть отменена. |
|
Класс task_handle представляет отдельный параллельный рабочий элемент. Он инкапсулирует инструкции и данные, необходимые для выполнения части работы. |
|
Представляет разрешенные параметры для создания задачи |
|
Блок сообщений timer — это одноцелевой source_block, способный отправлять сообщение цели по истечении указанного периода времени или через определенные интервалы. |
|
Блок сообщений transformer — одноцелевой многоисточниковый упорядоченный propagator_block, который может принимать сообщения одного типа и способен хранить неограниченное число сообщений другого типа. |
|
Блок сообщений unbounded_buffer — многоцелевой, многоисточниковый, упорядоченный propagator_block, способный хранить неограниченное число сообщений. |
|
Данный класс описывает исключение, которое генерируется всякий раз, когда используется неподдерживаемая операционная система. |
Структуры
Имя |
Описание |
---|---|
Структура DispatchState используется для передачи состояния методу IExecutionContext::Dispatch. Он описывает обстоятельства, под которыми вызывается метод Dispatch на интерфейсе IExecutionContext. |
|
Интерфейс для контекста выполнения, которые можно запускать на данный виртуальный процессор и доступный для совместного переключения контекста. |
|
Абстракция для аппаратного потока. |
|
Интерфейс к диспетчеру ресурсов среды параллелизма. Это интерфейс, по которому планировщики взаимодействовать с диспетчер ресурсов. |
|
Интерфейс к абстракции планировщика работы. Диспетчер ресурсов среды параллелизма использует этот интерфейс для связи с планировщиками работы. |
|
Интерфейс, по которому планировщики взаимодействуют со средой параллелизма диспетчера ресурсов для согласования выделения ресурсов. |
|
Абстракция для потока выполнения. В зависимости от создаваемого ключа политики SchedulerType планировщика, диспетчер ресурсов будет предоставить прокси-поток, который основывается на регулярном потоке Win32 или потоком, планируемым в режиме пользователя (UMS). UMS потоки являются поддерживаемыми в 64-разрядных операционных системах, начиная с Windows 7 и выше. |
|
Интерфейс к ресурсу выполнения, как определено диспетчером ресурсов. |
|
Интерфейс на узле топологии, определенный диспетчером ресурсов. Узел содержит один или несколько ресурсов выполнения. |
|
Представляет список завершения UMS. Когда UMS поток блокируется, назначенный контекст планирования планировщика запускается для принятия решения, что запланировать на базовый корень виртуального процессора, пока исходный поток заблокирован. Когда разблокируется исходный поток, операционная система ставит его в очередь списка завершения, которое доступен через этот интерфейс. Планировщик может запросить список завершения на назначенный планирования контекст или любое другое место, в котором он ищет работу. |
|
Интерфейс к абстракции планировщика работы, который хочет, чтобы диспетчер ресурсов среда параллелизма передал ему планируемые пользовательским режимом потоки (UMS). Диспетчер ресурсов использует этот интерфейс для связи с планировщиками UMS-потоков. Интерфейс IUMSScheduler наследует от интерфейса IScheduler. |
|
Абстракция для потока выполнения. Если требуется, чтобы планировщик предоставлять запланированные пользовательского режимом потоков (UMS), задайте значение для элемента политики планировщика SchedulerKind как UmsThreadDefault и реализуйте интерфейс IUMSScheduler. UMS потоки являются только поддерживаемыми в 64-разрядных операционных системах, начиная с Windows 7 и выше. |
|
Представляет уведомление от диспетчера ресурсов, что прокси поток, который заблокирован и запустил возврат к назначенному планирования контексту планировщика, разблокирован и готов для планирования. Этот интерфейс является недопустимым после перепланирования связанного контекста выполнения прокси-потока, возвращенного из метода GetContext. |
|
Абстракция для аппаратного потока, на котором может выполняться прокси-поток. |
|
Интерфейс планировщика |
|
Представляет указатель на планировщик. Этот класс существует для того, чтобы обеспечить возможность использования спецификации общего времени жизни путем применения shared_ptr или простой ссылки с помощью необработанного указателя. |
Перечисления
Имя |
Описание |
---|---|
Допустимые состояния для agent. |
|
Типы событий, которые могут быть отслежены с помощью возможностей трассировки, предоставляемые Библиотекой Agents. |
|
Типы событий, которые могут быть отслежены при использовании возможности трассировки, предоставляемой средой параллелизма. |
|
Флажки трассировки для типов событий |
|
Тип критической области, в которой контекст находится. |
|
Используется политикой DynamicProgressFeedback для описания, будет ли быть перебалансированы ресурсы для планировщика согласно статистическим сведениям, собранным из планировщика или только на основе виртуальных процессоров, переходящих из и в состояния простоя через вызовы методов Activate и Deactivate на интерфейсе IVirtualProcessorRoot. Дополнительные сведения о доступных политиках планировщиков см. в разделе Перечисление PolicyElementKey. |
|
Тип блока сообщений join. |
|
Допустимые ответы для предложения объекта message к блоку. |
|
Ключи политики, описывающие аспекты поведения планировщика. Каждый элемент политики описан парой ключ значение. Для получения дополнительных сведений о политиках планировщика и их влияние на планировщики см. раздел Планировщик задач (среда выполнения с параллелизмом). |
|
Используется политикой SchedulerKind для описания типа потоков, которые следует использовать планировщику для базовых контекстов выполнения. Дополнительные сведения о доступных политиках планировщиков см. в разделе Перечисление PolicyElementKey. |
|
Используется политикой SchedulingProtocol для описания, какой алгоритм планирования будет использоваться для планировщика. Дополнительные сведения о доступных политиках планировщиков см. в разделе Перечисление PolicyElementKey. |
|
Используется для обозначения состояния прокси-потока, когда он выполняет совместное контекстное переключение на другой прокси-поток. |
|
Описывает состояние выполнения объекта task_group или structured_task_group. Значение этого типа возвращается многочисленными методами, которые ожидают выполнения задач, запланированных для завершения группой задач. |
|
Используется политикой WinRTInitialization для описания того, как среда выполнения Windows будет инициализирована с потоками планировщика для приложения, которое работает в операционных системах Windows с версии 8 или выше. Дополнительные сведения о доступных политиках планировщиков см. в разделе Перечисление PolicyElementKey. |
Функции
Имя |
Описание |
---|---|
Выделяет блок памяти указанного размера из подраспределителя кэширования среды параллелизма. |
|
Перегружен. Операция асинхронной передачи, которая планирует задачу для распространения данных в целевой блок. |
|
Отменяет выполняющуюся в данный момент задачу. Эту функцию можно вызывать из тела задачи, чтобы прервать выполнение задачи и перевести ее в состояние canceled. Хотя ее можно использовать в качестве отклика для функции is_task_cancellation_requested, можно также использовать ее самостоятельно, чтобы инициировать отмену выполняющейся в настоящее время задачи. Вызов этой функции является неподдерживаемым сценарием, если вы не находитесь в теле task. Такие действия приведут к неопределенному поведению, например сбою или зависанию в приложении. |
|
Создает асинхронную конструкцию среды выполнения Windows на основе предоставленного пользователем лямбда-выражения или объекта функции. Возвращаемый тип create_async — один из следующих: IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ или IAsyncOperationWithProgress<TResult, TProgress>^, в зависимости от сигнатуры лямбда-выражения, переданного методу. |
|
Перегружен. Создает объект задачи PPL. create_task можно использовать везде, где вы использовали бы конструктор задачи. Предоставляется, главным образом, для удобства, так как она позволяет использовать ключевое слово auto для создания задач. |
|
Возвращает интерфейс, который представляет одиночный экземпляр диспетчера ресурсов среда среды выполнения параллелизма. Диспетчер ресурсов является ответственным за назначение ресурсов планировщикам, которым необходимо взаимодействовать друг с другом. |
|
Отключает трассировку в среде выполнения блокировки. Эта функция не рекомендуется, поскольку трассировка событий Windows по умолчанию не регистрируется. |
|
Включает трассировку в среде выполнения блокировки. Эта функция не рекомендуется, поскольку трассировка событий Windows теперь по умолчанию включена. |
|
Освобождает блок памяти, выделенной ранее методом Alloc подраспределителю кэширования среды параллелизма. |
|
Функция get_ambient_scheduler (среда выполнения с параллелизмом) |
|
Возвращает уникальный идентификатор, который может быть назначен контексту выполнения, который реализует интерфейс IExecutionContext. |
|
Возвращает версию операционной системы. |
|
Возвращает число потоков оборудования в базовой системе. |
|
Возвращает число узлов NUMA или пакеты процессора в базовой системе. |
|
Возвращает уникальный идентификатор, который может быть назначен планировщику, который реализует интерфейс IScheduler. |
|
Создает точку прерывания для отмены. Если отмена выполняется в контексте, где эта функция вызывается, это создает внутреннее исключение, которое прерывает текущую параллельную работу. Если отмена не выполняется, то функция не выполняет никаких действий. |
|
Возвращает значение, указывающее, находится ли группа задач, которая выполняется в данный момент встроено в текущем контексте, в процессе активной отмены (или будет вскоре). Обратите внимание, что если нет групп задач, выполняющихся в текущем контексте, будет возвращено false. |
|
Возвращает значение, указывающее, получила ли выполняющаяся в данный момент задача запрос на отмену своего выполнения. Отмена запрашивается в задаче, если задача была создана с токеном отмены и источник токенов, связанной с этим токеном, отменен. |
|
Перегружен. Конструирует блок сообщений choice из необязательного Scheduler или ScheduleGroup и от двух и более источников. |
|
Перегружен. Конструирует блок сообщений greedy multitype_join из необязательного Scheduler или ScheduleGroup и от двух до десяти источников ввода. |
|
Перегружен. Конструирует блок сообщений non_greedy multitype_join из необязательного Scheduler или ScheduleGroup и от двух до десяти источников ввода. |
|
Метод фабрики для создания объекта task_handle. |
|
Перегружен. Упорядочивает элементы указанного диапазона в неубывающую последовательность или в соответствии с критерием упорядочивания, указанным параллельно бинарным предикатом. Эта функция семантически схожа с std::sort, так как она - основанная на сравнении, неустойчивая, сортирует на месте, за исключением того, что ей необходим дополнительный пробел O(n) и инициализация по умолчанию для сортируемых элементов. |
|
Перегружен. parallel_for выполняет итерацию по диапазону индексов и выполняет предоставленный пользователем функцию в каждой итерации параллельно. |
|
Перегружен. parallel_for_each применяет указанную функцию к каждому элементу в диапазоне, параллельно. Оно эквивалентно семантически функции for_each в пространстве имен std, за исключением того, что итерации по элементам выполняется параллельно, и порядок итерации не определен. Аргумент _Func должен поддерживать оператор вызова функции формы operator()(T), где параметр T является типом элемента контейнера, итерация по которому выполняется. |
|
Перегружен. Выполняет объекты функции, предоставленные в виде параметров в параллели, и блоки до завершения их выполнения. Каждый объект функции может быть лямбда-выражением, указателем на функцию или любым объектом, который поддерживает оператор вызова функции с сигнатурой void operator()(). |
|
Перегружен. Упорядочивает элементы в указанном диапазоне в порядке неубывания с помощью алгоритма поразрядной сортировки. Это стабильная функция сортировки, требующая функцию проекции, которая может проектировать элементы для их сортировки в подобным целочисленным беззнаковым ключам. Требуется инициализация по умолчанию для сортируемых элементов. |
|
Перегружен. Вычисляет параллельно сумму всех элементов в указанном диапазоне путем вычисления последовательных частичных сумм или вычисляет результат последовательных частичных сумм, полученных сходным образом с использованием указанной бинарной операции, отличной от суммирования. parallel_reduce семантически аналогичен std::accumulate, но требует, чтобы бинарная операция была ассоциативна, и значение идентификатора вместо начального значения. |
|
Перегружен. Упорядочивает элементы указанного диапазона в неубывающую последовательность или в соответствии с критерием упорядочивания, указанным параллельно бинарным предикатом. Эта функция семантически схожа с std::sort, так как она основана на сравнении, неустойчива, сортирует на месте. |
|
Перегружен. Применяет параллельно заданный объект функции к каждому элементу в диапазоне источника или к паре элементов из двух исходных диапазонов и копирует возвращаемые значения объекта функции в диапазон назначения. Эта функция семантически эквивалентна std::transform. |
|
Перегружен. Реализация общего получения, позволяющая контексту ждать данных из ровно одного источника и фильтровать значения, которые принимаются. |
|
Выполняет объект функции немедленно и синхронно в контексте заданного токена отмены. |
|
Перегружен. Операция синхронной отправки, которая ожидает до тех пор, пока целевой объект не принимает или отклоняет сообщение. |
|
Функция set_ambient_scheduler (среда выполнения с параллелизмом) |
|
Перегружен. Ограничить ресурсы выполнения, используемые внутренними рабочими потоками среды выполнения с параллелизмом, определенным набором сходства. Этот метод допустим для вызова только до того, как диспетчер ресурсов был создан, или между двумя периодами существования диспетчера ресурсов. Он может быть вызван несколько раз, если диспетчер ресурсов не существует на момент вызова. После установления ограничения сходства, оно будет оставаться действительным до следующего допустимого вызова метода set_task_execution_resources. Предоставленная маска сходства не обязана быть подмножеством маски сходства процесса. Сходство процесса обновляется при необходимости. |
|
Обменивает элементы двух объектов concurrent_vector. |
|
Функция task_from_exception (среда выполнения с параллелизмом) |
|
Сопоставляет данное имя блоку сообщений или агенту в трассировки событий Windows. |
|
Перегружен. Реализация общей попытки получения, позволяющая контексту искать данные из ровно одного источника и фильтровать значения, которые принимаются. Если данные не готовы, метод вернет значение false. |
|
Приостанавливает текущий контекст на заданной промежутка времени. |
|
Создает задачу, которая завершается успешно, если все задачи, предоставленные в качестве аргументов, завершаются успешно. |
|
Перегружен. Создает задачу, которая будет выполнена успешно, если любая из задача, предоставленных как аргументы, выполнена успешно. |
Операторы
Имя |
Описание |
---|---|
Проверяет, равен ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны. |
|
Перегружен. Создает задачу, которая завершается успешно, если обе задачи, предоставленные в качестве аргументов, завершаются успешно. |
|
Перегружен. Создает задачу, которая будет выполнена успешно, если любая из задач, представленная в качетстве аргумента, выполнена успешно. |
|
Проверяет, меньше ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны. |
|
Проверяет, меньше либо равен ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны. |
|
Проверяет, равен ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны. |
|
Проверяет, больше ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны. |
|
Проверяет, больше ли равен ли объект concurrent_vector на левой стороне оператора объекту concurrent_vector правой стороны. |
Константы
Имя |
Описание |
---|---|
Категория GUID ({B9B5B78C-0713-4898-A21A-C67949DCED07}), описывающая события трассировки Windows, заменяется библиотекой агентов среды выполнения с параллелизмом. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с делами или задачами. |
|
Поставщик ETW GUID для среды параллелизма. |
|
Указывает поддержку интерфейса диспетчера ресурсов, определенные в Visual Studio 2010. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые не описаны подробнее другой категорией. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с контекстами. |
|
Значение, указывающее, что время ожидания никогда не должно кончаться. |
|
Значение, указывающее, что время ожидания кончилось. |
|
Особое значение для ключа политики ContextPriority указывающее, что приоритет потока всех контекстов в планировщике должен быть тем же, что у потока, который создал планировщик. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с блокировками. |
|
Специальное значение для ключей политики MinConcurrency и MaxConcurrency. По умолчанию число аппаратных потоков на компьютере в случае отсутствия других ограничений. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с использованием функции parallel_for_each. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с использованием функции parallel_for. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с использованием функции parallel_invoke. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с диспетчером ресурсов. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с группами расписания. |
|
Категория GUID, описывающий события ETW, созданные средой выполнения параллелизма, которые непосредственно связаны с действием расписания. |
|
Категория 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