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

Пространство имен Concurrency предоставляет классы и функции, предоставляющие доступ к среде выполнения с параллелизмом, которая является платформой параллельного программирования для C++.The Concurrency namespace provides classes and functions that give you access to the Concurrency Runtime, a concurrent programming framework for C++. Для получения дополнительной информации см. Concurrency Runtime.For more information, see Concurrency Runtime.

СинтаксисSyntax

namespace concurrency;

ЧленыMembers

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

ИмяName ОписаниеDescription
runtime_object_identity Каждый экземпляр сообщения имеет идентификатор, который сопутствует ему при клонировании и передаче между компонентами обмена сообщениями.Each message instance has an identity that follows it as it is cloned and passed between messaging components. Он не может быть адресом объекта сообщения.This cannot be the address of the message object.
task_status Тип, который представляет конечное состояние задачи.A type that represents the terminal state of a task. Допустимые значения: completed и canceled.Valid values are completed and canceled.
TaskProc Простая абстракция для задачи, определенная как void (__cdecl * TaskProc)(void *).An elementary abstraction for a task, defined as void (__cdecl * TaskProc)(void *). TaskProc вызывается для вызова тела задачи.A TaskProc is called to invoke the body of a task.
TaskProc_t Простая абстракция для задачи, определенная как void (__cdecl * TaskProc_t)(void *).An elementary abstraction for a task, defined as void (__cdecl * TaskProc_t)(void *). TaskProc вызывается для вызова тела задачи.A TaskProc is called to invoke the body of a task.

КлассыClasses

nameName ОписаниеDescription
Класс affinity_partitioneraffinity_partitioner Class Класс affinity_partitioner аналогичен классу static_partitioner, но он повышает сходство кэша путем подбора поддиапазонов сопоставления для потоков рабочего процесса.The affinity_partitioner class is similar to the static_partitioner class, but it improves cache affinity by its choice of mapping subranges to worker threads. Он может значительно повысить производительность, если цикл повторно выполняется в одном и том же наборе данных и данные помещаются в кэш.It can improve performance significantly when a loop is re-executed over the same data set, and the data fits in cache. Обратите внимание, что один и тот же объект affinity_partitioner должен использоваться с последующими итерациями параллельного цикла, выполняемого в указанном наборе данных, чтобы воспользоваться преимуществом локальности данных.Note that the same affinity_partitioner object must be used with subsequent iterations of a parallel loop that is executed over a particular data set, to benefit from data locality.
Класс агентаagent Class Класс, предназначенный для использования в качестве базового класса для всех независимых агентов.A class intended to be used as a base class for all independent agents. Он используется для скрытия состояния от других агентов и взаимодействия посредством передачи сообщений.It is used to hide state from other agents and interact using message-passing.
Класс auto_partitionerauto_partitioner Class Класс auto_partitioner представляет метод, который алгоритмы parallel_for, parallel_for_each и parallel_transform используют по умолчанию для разделения обрабатываемого диапазона.The auto_partitioner class represents the default method parallel_for, parallel_for_each and parallel_transform use to partition the range they iterates over. Этот метод секционирования использует перенос диапазона для балансировки нагрузки, а также для отмены при переборе.This method of partitioning employs range stealing for load balancing as well as per-iterate cancellation.
Класс bad_targetbad_target Class Этот класс описывает исключение, которое создается, если блок обмена сообщениями получает указатель на целевой объект, который неверен для выполняемой операции.This class describes an exception thrown when a messaging block is given a pointer to a target which is invalid for the operation being performed.
Класс Callcall Class Блок обмена сообщениями call — это упорядоченный блок target_block с несколькими источниками, который вызывает заданную функцию при получении сообщения.A call messaging block is a multi-source, ordered target_block that invokes a specified function when receiving a message.
Класс cancellation_tokencancellation_token Class Класс cancellation_token представляет возможность определить, получала ли некоторая операция запрос на отмену.The cancellation_token class represents the ability to determine whether some operation has been requested to cancel. Заданный токен можно связать с task_group, structured_task_group или task для предоставления неявной отмены.A given token can be associated with a task_group, structured_task_group, or task to provide implicit cancellation. Его также можно опрашивать на предмет отмены или зарегистрировать обратный вызов для той ситуации, когда отменяется связанный cancellation_token_source.It can also be polled for cancellation or have a callback registered for if and when the associated cancellation_token_source is canceled.
Класс cancellation_token_registrationcancellation_token_registration Class Класс cancellation_token_registration представляет уведомление обратного вызова из cancellation_token.The cancellation_token_registration class represents a callback notification from a cancellation_token. При использовании метода register на cancellation_token для получения уведомления о времени выполнения отмены объект cancellation_token_registration возвращается как дескриптор для обратного вызова, чтобы вызывающий код мог запросить, чтобы определенный обратный вызов больше не выполнялся с помощью метода deregister.When the register method on a cancellation_token is used to receive notification of when cancellation occurs, a cancellation_token_registration object is returned as a handle to the callback so that the caller can request a specific callback no longer be made through use of the deregister method.
Класс cancellation_token_sourcecancellation_token_source Class Класс cancellation_token_source представляет возможность отмены некоторой отменяемой операции.The cancellation_token_source class represents the ability to cancel some cancelable operation.
Класс choicechoice Class Блок обмена сообщениями choice — это блок с несколькими источниками и одной целью, который представляет взаимодействие потока управления с набором источников.A choice messaging block is a multi-source, single-target block that represents a control-flow interaction with a set of sources. Блок choice будет ожидать доступа к любому из нескольких источников для создания сообщения и распространит индекс источника, создавшего сообщение.The choice block will wait for any one of multiple sources to produce a message and will propagate the index of the source that produced the message.
Класс combinablecombinable Class Объект combinable<T> предназначен для предоставления частной для потока копии данных для выполнения локальных для потока вложенных вычислений без блокировки потока в параллельных алгоритмах.The combinable<T> object is intended to provide thread-private copies of data, to perform lock-free thread-local sub-computations during parallel algorithms. В конце выполнения параллельной операции частные для потока вложенные вычисления можно объединить для получения общего результата.At the end of the parallel operation, the thread-private sub-computations can then be merged into a final result. Этот класс можно использовать вместо общей переменной, что может позволить улучшить производительность в случае возникновения большого числа конфликтов доступа к этой общей переменной.This class can be used instead of a shared variable, and can result in a performance improvement if there would otherwise be a lot of contention on that shared variable.
Класс concurrent_priority_queueconcurrent_priority_queue Class Класс concurrent_priority_queue — это контейнер, который позволяет нескольким потокам параллельно помещать и извлекать элементы.The concurrent_priority_queue class is a container that allows multiple threads to concurrently push and pop items. Элементы извлекаются в порядке приоритета, определяемого функтором, предоставленным в качестве аргумента шаблона.Items are popped in priority order where priority is determined by a functor supplied as a template argument.
Класс concurrent_queueconcurrent_queue Class Класс concurrent_queue представляет собой класс контейнера последовательности, обеспечивающий доступ к элементам в порядке поступления.The concurrent_queue class is a sequence container class that allows first-in, first-out access to its elements. Он позволяет использовать ограниченный набор параллельно-безопасных операций, таких как push и try_pop.It enables a limited set of concurrency-safe operations, such as push and try_pop.
Класс concurrent_unordered_mapconcurrent_unordered_map Class Класс concurrent_unordered_map представляет собой безопасный в отношении параллелизма контейнер, управляющий последовательностью элементов типа std::pair<const K, _Element_type> переменной длины.The concurrent_unordered_map class is a concurrency-safe container that controls a varying-length sequence of elements of type std::pair<const K, _Element_type>. Последовательность представлена таким образом, что позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора.The sequence is represented in a way that enables concurrency-safe append, element access, iterator access, and iterator traversal operations.
Класс concurrent_unordered_multimapconcurrent_unordered_multimap Class Класс concurrent_unordered_multimap представляет собой безопасный в отношении параллелизма контейнер, управляющий последовательностью элементов типа std::pair<const K, _Element_type> переменной длины.The concurrent_unordered_multimap class is an concurrency-safe container that controls a varying-length sequence of elements of type std::pair<const K, _Element_type>. Последовательность представлена таким образом, что позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора.The sequence is represented in a way that enables concurrency-safe append, element access, iterator access and iterator traversal operations.
Класс concurrent_unordered_multisetconcurrent_unordered_multiset Class concurrent_unordered_multisetКласс является типобезопасным контейнером, который управляет последовательностью элементов типа K с различной длиной. Последовательность представлена таким образом, что позволяет выполнять операции добавления в Сейф, доступа к элементам, доступа итератора и прохождения итератора.The concurrent_unordered_multiset class is an concurrency-safe container that controls a varying-length sequence of elements of type K. The sequence is represented in a way that enables concurrency-safe append, element access, iterator access and iterator traversal operations.
Класс concurrent_unordered_setconcurrent_unordered_set Class concurrent_unordered_setКласс является типобезопасным контейнером, который управляет последовательностью элементов типа K с различной длиной. Последовательность представлена таким образом, что позволяет выполнять операции добавления в Сейф, доступа к элементам, доступа итератора и прохождения итератора.The concurrent_unordered_set class is an concurrency-safe container that controls a varying-length sequence of elements of type K. The sequence is represented in a way that enables concurrency-safe append, element access, iterator access and iterator traversal operations.
Класс concurrent_vectorconcurrent_vector Class Класс concurrent_vector представляет собой класс контейнера последовательности, обеспечивающий доступ к элементам в случайном порядке.The concurrent_vector class is a sequence container class that allows random access to any element. Позволяет параллельно-безопасно выполнять операции присоединения, получения доступа к элементу, доступа к итератору и обхода итератора.It enables concurrency-safe append, element access, iterator access, and iterator traversal operations.
Класс контекстаContext Class Представляет абстракцию для контекста выполнения.Represents an abstraction for an execution context.
Класс context_self_unblockcontext_self_unblock Class Этот класс описывает исключение, которое создается при вызове метода Unblock объекта Context из того же контекста.This class describes an exception thrown when the Unblock method of a Context object is called from the same context. Это означает попытку данного контекста разблокировать самого себя.This would indicate an attempt by a given context to unblock itself.
Класс context_unblock_unbalancedcontext_unblock_unbalanced Class Данный класс описывает исключение, создаваемое, если вызовы методов Block и Unblock объекта Context объединены неправильно.This class describes an exception thrown when calls to the Block and Unblock methods of a Context object are not properly paired.
Класс critical_sectioncritical_section Class Не допускающий повторные входы мьютекс, который явно учитывает среду выполнения с параллелизмом.A non-reentrant mutex which is explicitly aware of the Concurrency Runtime.
Класс CurrentSchedulerCurrentScheduler Class Представляет абстракцию для текущего планировщика, связанного с вызывающим контекстом.Represents an abstraction for the current scheduler associated with the calling context.
Класс default_scheduler_existsdefault_scheduler_exists Class Этот класс описывает исключение, возникающее при вызове метода Scheduler::SetDefaultSchedulerPolicy, когда планировщик по умолчанию уже существует в процессе.This class describes an exception thrown when the Scheduler::SetDefaultSchedulerPolicy method is called when a default scheduler already exists within the process.
Класс событийevent Class Сбрасываемое вручную событие, которое явно учитывает среду выполнения с параллелизмом.A manual reset event which is explicitly aware of the Concurrency Runtime.
Класс improper_lockimproper_lock Class Этот класс описывает исключение, создаваемое, когда блокировка получена неправильно.This class describes an exception thrown when a lock is acquired improperly.
Класс improper_scheduler_attachimproper_scheduler_attach Class Этот класс описывает исключение, которое создается при вызове метода Attach на объекте Scheduler, который уже присоединен к текущему контексту.This class describes an exception thrown when the Attach method is called on a Scheduler object which is already attached to the current context.
Класс improper_scheduler_detachimproper_scheduler_detach Class Этот класс описывает исключение, создаваемое при вызове метода CurrentScheduler::Detach в контексте, который не присоединен ни к одному планировщику с помощью метода Attach объекта Scheduler.This class describes an exception thrown when the CurrentScheduler::Detach method is called on a context which has not been attached to any scheduler using the Attach method of a Scheduler object.
Класс improper_scheduler_referenceimproper_scheduler_reference Class Данный класс описывает исключение, которое создается при вызове метода Reference на объекте Scheduler, который завершает работу, из контекста, который не является частью этого планировщика.This class describes an exception thrown when the Reference method is called on a Scheduler object that is shutting down, from a context that is not part of that scheduler.
Класс invalid_link_targetinvalid_link_target Class Данный класс описывает исключение, создаваемое, когда вызывается метод link_target блока обмена сообщениями и блок сообщений не может создать связь с целевым объектом.This class describes an exception thrown when the link_target method of a messaging block is called and the messaging block is unable to link to the target. Это может быть результатом превышения числа ссылок, допустимых для блока сообщений, или попытки связать указанную цель с одним и тем же источником дважды.This can be the result of exceeding the number of links the messaging block is allowed or attempting to link a specific target twice to the same source.
Класс invalid_multiple_schedulinginvalid_multiple_scheduling Class Этот класс описывает исключение, создаваемое, если объект task_handle запланирован несколько раз с помощью метода run объекта task_group или structured_task_group без промежуточных вызовов любого из методов wait или run_and_wait.This class describes an exception thrown when a task_handle object is scheduled multiple times using the run method of a task_group or structured_task_group object without an intervening call to either the wait or run_and_wait methods.
Класс invalid_operationinvalid_operation Class Данный класс описывает исключение, возникающее при выполнении недопустимой операции, которая не описывается более точно другим типом исключения, создаваемым средой выполнения с параллелизмом.This class describes an exception thrown when an invalid operation is performed that is not more accurately described by another exception type thrown by the Concurrency Runtime.
Класс invalid_oversubscribe_operationinvalid_oversubscribe_operation Class Этот класс описывает исключение, возникающее при Context::Oversubscribe вызове метода с _BeginOversubscription параметром, для которого задано значение false без предварительного вызова метода, для Context::Oversubscribe которого _BeginOversubscription параметру задано значение true .This class describes an exception thrown when the Context::Oversubscribe method is called with the _BeginOversubscription parameter set to false without a prior call to the Context::Oversubscribe method with the _BeginOversubscription parameter set to true.
Класс invalid_scheduler_policy_keyinvalid_scheduler_policy_key Class Этот класс описывает исключение, создаваемое, когда конструктору объекта SchedulerPolicy передается неверный или неизвестный ключ или методу SetPolicyValue объекта SchedulerPolicy передается ключ, который должен быть изменен другими средствами, такими как метод SetConcurrencyLimits.This class describes an exception thrown when an invalid or unknown key is passed to a SchedulerPolicy object constructor, or the SetPolicyValue method of a SchedulerPolicy object is passed a key that must be changed using other means such as the SetConcurrencyLimits method.
Класс invalid_scheduler_policy_thread_specificationinvalid_scheduler_policy_thread_specification Class Данный класс описывает исключение, создаваемое при попытке установить ограничения параллельности объекта SchedulerPolicy таким образом, чтобы значение ключа MinConcurrency было меньше, чем значение ключа MaxConcurrency.This class describes an exception thrown when an attempt is made to set the concurrency limits of a SchedulerPolicy object such that the value of the MinConcurrency key is less than the value of the MaxConcurrency key.
Класс invalid_scheduler_policy_valueinvalid_scheduler_policy_value Class Этот класс описывает исключение, создаваемое, когда ключу политики объекта SchedulerPolicy присваивается недопустимое для этого ключа значение.This class describes an exception thrown when a policy key of a SchedulerPolicy object is set to an invalid value for that key.
Класс ISourceISource Class Класс ISource является интерфейсом для всех блоков источников.The ISource class is the interface for all source blocks. Блоки источников распространяют сообщения в блоки ITarget.Source blocks propagate messages to ITarget blocks.
Класс ITargetITarget Class Класс ITarget является интерфейсом для всех целевых блоков.The ITarget class is the interface for all target blocks. Целевые блоки потребляют сообщения, предлагаемые ими блоками ISource.Target blocks consume messages offered to them by ISource blocks.
Класс joinjoin Class Блок обмена сообщениями join — это упорядоченный блок propagator_block с несколькими источниками и одной целью, который объединяет сообщения типа T от каждого из своих источников.A join messaging block is a single-target, multi-source, ordered propagator_block which combines together messages of type T from each of its sources.
Класс Locationlocation Class Абстракция физического расположения на оборудовании.An abstraction of a physical location on hardware.
Класс сообщенийmessage Class Основной конверт сообщения, содержащий полезные данные, передаваемые между блоками обмена сообщениями.The basic message envelope containing the data payload being passed between messaging blocks.
Класс message_not_foundmessage_not_found Class Этот класс описывает исключение, создаваемое, когда блок обмена сообщениями не может найти запрошенное сообщение.This class describes an exception thrown when a messaging block is unable to find a requested message.
Класс message_processormessage_processor Class Класс message_processor — это абстрактный базовый класс для обработки объектов message.The message_processor class is the abstract base class for processing of message objects. Упорядочивание сообщений не гарантируется.There is no guarantee on the ordering of the messages.
Класс missing_waitmissing_wait Class Этот класс описывает исключение, возникающее при наличии задач, для которых по-прежнему запланирован объект task_group или structured_task_group на момент выполнения деструктора объекта.This class describes an exception thrown when there are tasks still scheduled to a task_group or structured_task_group object at the time that object's destructor executes. Это исключение не создается, если деструктор достигается из-за освобождения стека в результате исключения.This exception will never be thrown if the destructor is reached because of a stack unwinding as the result of an exception.
Класс multi_link_registrymulti_link_registry Class Объект multi_link_registry представляет собой network_link_registry, управляющий несколькими блоками источников или целевыми блоками.The multi_link_registry object is a network_link_registry that manages multiple source blocks or multiple target blocks.
Класс multitype_joinmultitype_join Class Блок обмена сообщениями multitype_join — это блок с несколькими источниками и одной целью, который объединяет сообщения разных типов от каждого из своих источников и предлагает кортеж объединенных сообщений своему целевому объекту.A multitype_join messaging block is a multi-source, single-target messaging block that combines together messages of different types from each of its sources and offers a tuple of the combined messages to its targets.
Класс nested_scheduler_missing_detachnested_scheduler_missing_detach Class Этот класс описывает исключение, которое возникает, когда исполняющая среда с параллелизмом обнаруживает, что вы не вызвали метод CurrentScheduler::Detach для контекста, который присоединился ко второму планировщику с помощью метода Attach объекта Scheduler.This class describes an exception thrown when the Concurrency Runtime detects that you neglected to call the CurrentScheduler::Detach method on a context that attached to a second scheduler using the Attach method of the Scheduler object.
Класс network_link_registrynetwork_link_registry Class Абстрактный базовый класс network_link_registry управляет связями между блоками источников и целевыми блоками.The network_link_registry abstract base class manages the links between source and target blocks.
Класс operation_timed_outoperation_timed_out Class Этот класс описывает исключение, создаваемое по истечении времени ожидания операции.This class describes an exception thrown when an operation has timed out.
Класс ordered_message_processorordered_message_processor Class Класс ordered_message_processor представляет собой message_processor, который позволяет блокам обмена сообщениями обрабатывать сообщения в том порядке, в котором они их получают.An ordered_message_processor is a message_processor that allows message blocks to process messages in the order they were received.
Класс overwrite_bufferoverwrite_buffer Class Блок обмена сообщениями overwrite_buffer — это упорядоченный блок propagator_block с несколькими источниками и несколькими целями, который может хранить одно сообщение в один момент времени.An overwrite_buffer messaging block is a multi-target, multi-source, ordered propagator_block capable of storing a single message at a time. Новые сообщения перезаписывают предыдущие.New messages overwrite previously held ones.
Класс progress_reporterprogress_reporter Class Класс формирования отчетов о ходе выполнения позволяет формировать уведомления о ходе выполнения определенного типа.The progress reporter class allows reporting progress notifications of a specific type. Каждый объект progress_reporter привязан к конкретному асинхронному действию или операции.Each progress_reporter object is bound to a particular asynchronous action or operation.
Класс propagator_blockpropagator_block Class Класс propagator_block — это абстрактный базовый класс для блоков сообщений, которые являются одновременно блоками источников и целевыми блоками.The propagator_block class is an abstract base class for message blocks that are both a source and target. Он объединяет функциональные возможности обоих классов, source_block и target_block.It combines the functionality of both the source_block and target_block classes.
Класс reader_writer_lockreader_writer_lock Class Блокировка чтения или записи на основе очередей с предпочтением записи только с локальным вращением.A writer-preference queue-based reader-writer lock with local only spinning. Блокировка предоставляет модулям записи доступ в порядке поступления и блокирует доступ модулей чтения при постоянной нагрузке модулей записи.The lock grants first in - first out (FIFO) access to writers and starves readers under a continuous load of writers.
Класс ScheduleGroupScheduleGroup Class Представляет абстракцию для группы расписаний.Represents an abstraction for a schedule group. Группы расписаний организуют набор связанных работ, которые выигрывают от планирования в непосредственной близости друг от друга: во времени (путем выполнения другой задачи в той же группе перед перемещением в другую группу) или в пространстве (путем выполнения нескольких элементов в той же группе в том же узле NUMA или физическом сокете).Schedule groups organize a set of related work that benefits from being scheduled close together either temporally, by executing another task in the same group before moving to another group, or spatially, by executing multiple items within the same group on the same NUMA node or physical socket.
Класс SchedulerScheduler Class Представляет абстракцию для планировщика среды выполнения с параллелизмом.Represents an abstraction for a Concurrency Runtime scheduler.
Класс scheduler_not_attachedscheduler_not_attached Class Этот класс описывает исключение, создаваемое при выполнении операции, при которой планировщик должен был присоединен к текущему контексту, а он не присоединен.This class describes an exception thrown when an operation is performed which requires a scheduler to be attached to the current context and one is not.
Класс scheduler_resource_allocation_errorscheduler_resource_allocation_error Class Этот класс описывает исключение, возникающее из-за сбоя получения критического ресурса в исполняющей среде с параллелизмом.This class describes an exception thrown because of a failure to acquire a critical resource in the Concurrency Runtime.
Класс scheduler_worker_creation_errorscheduler_worker_creation_error Class Этот класс описывает исключение, которое создается из-за сбоя создания рабочего контекста выполнения в исполняющей среде с параллелизмом.This class describes an exception thrown because of a failure to create a worker execution context in the Concurrency Runtime.
Класс SchedulerPolicySchedulerPolicy Class Класс SchedulerPolicy содержит набор пар «ключ — значение» по одной для каждого элемента политики, управляющего поведением экземпляра планировщика.The SchedulerPolicy class contains a set of key/value pairs, one for each policy element, that control the behavior of a scheduler instance.
Класс simple_partitionersimple_partitioner Class Класс simple_partitioner представляет статическое разделение диапазона, в котором итерации выполняются с помощью parallel_for.The simple_partitioner class represents a static partitioning of the range iterated over by parallel_for. Разделитель делит диапазон на фрагменты таким образом, что каждый фрагмент имеет число итераций не менее указанного размера фрагмента.The partitioner divides the range into chunks such that each chunk has at least the number of iterations specified by the chunk size.
Класс single_assignmentsingle_assignment Class Блок обмена сообщениями single_assignment — это упорядоченный блок propagator_block с несколькими источниками и несколькими целями, который может хранить один объект message с однократной записью.A single_assignment messaging block is a multi-target, multi-source, ordered propagator_block capable of storing a single, write-once message.
Класс single_link_registrysingle_link_registry Class Объект single_link_registry представляет собой network_link_registry, управляющий только одним блоком источника или целевым блоком.The single_link_registry object is a network_link_registry that manages only a single source or target block.
Класс source_blocksource_block Class Класс source_block — это абстрактный базовый класс только для блоков источника.The source_block class is an abstract base class for source-only blocks. Класс предоставляет основные функции управления соединениями, а также проверки распространенных ошибок.The class provides basic link management functionality as well as common error checks.
Класс source_link_managersource_link_manager Class Объект source_link_manager управляет сетевыми соединениями блоков обмена сообщениями с блоками ISource.The source_link_manager object manages messaging block network links to ISource blocks.
Класс static_partitionerstatic_partitioner Class Класс static_partitioner представляет статическое разделение диапазона, в котором итерации выполняются с помощью parallel_for.The static_partitioner class represents a static partitioning of the range iterated over by parallel_for. Модуль разделения разделяет диапазон на количество фрагментов, доступных для базового планировщика.The partitioner divides the range into as many chunks as there are workers available to the underlying scheduler.
Класс structured_task_groupstructured_task_group Class Класс structured_task_group представляет коллекцию параллельной работы со сложной структурой.The structured_task_group class represents a highly structured collection of parallel work. Можно поместить в очередь structured_task_group отдельные параллельные задачи с помощью объектов task_handle и ожидать их выполнения или отменить группу задач до завершения выполнения, что приведет к отмене всех задач, которые не начали выполнение.You can queue individual parallel tasks to a structured_task_group using task_handle objects, and wait for them to complete, or cancel the task group before they have finished executing, which will abort any tasks that have not begun execution.
Класс target_blocktarget_block Class Класс target_block — это абстрактный базовый класс, который предоставляет основные функции управления соединениями и проверку ошибок только для целевых блоков.The target_block class is an abstract base class that provides basic link management functionality and error checking for target only blocks.
Класс Task (среда выполнения с параллелизмом)task Class (Concurrency Runtime) Класс task библиотеки параллельных шаблонов (PPL).The Parallel Patterns Library (PPL) task class. Объект task представляет работу, которая может быть выполнена асинхронно и параллельно с другими задачами и параллельной работой, созданной параллельными алгоритмами в среде выполнения с параллелизмом.A task object represents work that can be executed asynchronously, and concurrently with other tasks and parallel work produced by parallel algorithms in the Concurrency Runtime. При успешном завершении он выводи результат типа _ResultType.It produces a result of type _ResultType on successful completion. Задачи типа task<void> никакого результата не дают.Tasks of type task<void> produce no result. Задачи можно ожидать и отменять независимо от других задач.A task can be waited upon and canceled independently of other tasks. Также возможно сочетание с другими задачами с помощью шаблонов продолжений (then), присоединений (when_all) и выбора (when_any).It can also be composed with other tasks using continuations(then), and join(when_all) and choice(when_any) patterns.
Класс task_canceledtask_canceled Class Этот класс описывает исключение, которое создается уровнем задач PPL для принудительной отмены текущей задачи.This class describes an exception thrown by the PPL tasks layer in order to force the current task to cancel. Он также вызывается get() методом в задачедля отмененной задачи.It is also thrown by the get() method on task, for a canceled task.
Класс task_completion_eventtask_completion_event Class Класс task_completion_event позволяет отложить выполнение задачи до выполнения условия или запустить задачу в ответ на внешнее событие.The task_completion_event class allows you to delay the execution of a task until a condition is satisfied, or start a task in response to an external event.
Класс task_continuation_contexttask_continuation_context Class Класс task_continuation_context позволяет указать место продолжения выполнения задачи.The task_continuation_context class allows you to specify where you would like a continuation to be executed. Этот класс рекомендуется использовать только из приложения UWP.It is only useful to use this class from a UWP app. Для приложений, не относящихся к среда выполнения Windows, контекст выполнения продолжения задачи определяется средой выполнения и не настраивается.For non-Windows Runtime apps, the task continuation's execution context is determined by the runtime, and not configurable.
Класс task_grouptask_group Class Класс task_group представляет коллекцию параллельной работы, для которой возможно ожидание или отмена.The task_group class represents a collection of parallel work which can be waited on or canceled.
Класс task_handletask_handle Class Класс task_handle представляет отдельный параллельный рабочий элемент.The task_handle class represents an individual parallel work item. Он инкапсулирует инструкции и данные, необходимые для выполнения части работы.It encapsulates the instructions and the data required to execute a piece of work.
Класс task_options (среда выполнения с параллелизмом)task_options Class (Concurrency Runtime) Представляет допустимые параметры для создания задачиRepresents the allowed options for creating a task
Класс Timertimer Class Блок обмена сообщениями timer — это блок source_block с одной целью, который может отправлять сообщение своей цели по истечении указанного периода времени или через заданные интервалы времени.A timer messaging block is a single-target source_block capable of sending a message to its target after a specified time period has elapsed or at specific intervals.
Класс transformertransformer Class Блок обмена сообщениями transformer — это упорядоченный блок propagator_block с одной целью и несколькими источниками, который может принимать сообщения одного типа и хранить неограниченное число сообщений другого типа.A transformer messaging block is a single-target, multi-source, ordered propagator_block which can accept messages of one type and is capable of storing an unbounded number of messages of a different type.
Класс unbounded_bufferunbounded_buffer Class Блок обмена сообщениями unbounded_buffer — это упорядоченный блок propagator_block с несколькими целями и несколькими источниками, который может хранить неограниченное число сообщений.An unbounded_buffer messaging block is a multi-target, multi-source, ordered propagator_block capable of storing an unbounded number of messages.
Класс unsupported_osunsupported_os Class Данный класс описывает исключение, которое создается при использовании неподдерживаемой операционной системы.This class describes an exception thrown when an unsupported operating system is used.

СтруктурыStructures

ИмяName ОписаниеDescription
Структура DispatchStateDispatchState Structure Структура DispatchState используется для передачи состояния в метод IExecutionContext::Dispatch.The DispatchState structure is used to transfer state to the IExecutionContext::Dispatch method. Она описывает обстоятельства, при которых метод Dispatch вызывается для интерфейса IExecutionContext.It describes the circumstances under which the Dispatch method is invoked on an IExecutionContext interface.
Структура IExecutionContextIExecutionContext Structure Интерфейс для контекста выполнения, который может выполняться на данном виртуальном процессоре и к которому может применяться совместное переключение контекста.An interface to an execution context which can run on a given virtual processor and be cooperatively context switched.
Структура IExecutionResourceIExecutionResource Structure Абстракция для аппаратного потока.An abstraction for a hardware thread.
Структура IResourceManagerIResourceManager Structure Интерфейс для диспетчера ресурсов среды выполнения с параллелизмом.An interface to the Concurrency Runtime's Resource Manager. Это интерфейс, по которому планировщики взаимодействуют с диспетчером ресурсов.This is the interface by which schedulers communicate with the Resource Manager.
Структура ISchedulerIScheduler Structure Интерфейс для абстракции планировщика работы.An interface to an abstraction of a work scheduler. Диспетчер ресурсов среды выполнения с параллелизмом использует этот интерфейс для взаимодействия с планировщиками работы.The Concurrency Runtime's Resource Manager uses this interface to communicate with work schedulers.
Структура ISchedulerProxyISchedulerProxy Structure Интерфейс, по которому планировщики взаимодействуют с диспетчером ресурсов среды выполнения с параллелизмом для согласования выделения ресурсов.The interface by which schedulers communicate with the Concurrency Runtime's Resource Manager to negotiate resource allocation.
Структура IThreadProxyIThreadProxy Structure Абстракция для потока выполнения.An abstraction for a thread of execution. В зависимости от ключа политики SchedulerType созданного планировщика, диспетчер ресурсов предоставит прокси-поток, поддерживаемый обычным потоком Win32 или потоком планировщика пользовательского режима (UMS).Depending on the SchedulerType policy key of the scheduler you create, the Resource Manager will grant you a thread proxy that is backed by either a regular Win32 thread or a user-mode schedulable (UMS) thread. Потоки UMS поддерживаются в 64-разрядных операционных системах Windows 7 и более поздних версий.UMS threads are supported on 64-bit operating systems with version Windows 7 and higher.
Структура ITopologyExecutionResourceITopologyExecutionResource Structure Интерфейс для ресурса выполнения, как определено диспетчером ресурсов.An interface to an execution resource as defined by the Resource Manager.
Структура ITopologyNodeITopologyNode Structure Интерфейс для узла топологии, как определено диспетчером ресурсов.An interface to a topology node as defined by the Resource Manager. Узел содержит один или несколько ресурсов выполнения.A node contains one or more execution resources.
Структура IUMSCompletionListIUMSCompletionList Structure Представляет список выполнения UMS.Represents a UMS completion list. Когда поток UMS блокируется, отправляется назначенный планировщиком контекст планирования для принятия решения о том, что нужно запланировать для корня базового виртуального процессора, пока исходный поток заблокирован.When a UMS thread blocks, the scheduler's designated scheduling context is dispatched in order to make a decision of what to schedule on the underlying virtual processor root while the original thread is blocked. Когда снимается блокировка исходного потока, операционная система ставит его в очередь списка выполнения, который доступен через этот интерфейс.When the original thread unblocks, the operating system queues it to the completion list which is accessible through this interface. Планировщик может запросить список выполнения в назначенном контексте планирования или в другом месте, в котором он выполняет поиск работы.The scheduler can query the completion list on the designated scheduling context or any other place it searches for work.
Структура IUMSSchedulerIUMSScheduler Structure Интерфейс абстракции планировщика, которому требуется, чтобы диспетчер ресурсов среды выполнения с параллелизмом передал ему потоки планировщика в пользовательском режиме (UMS).An interface to an abstraction of a work scheduler that wants the Concurrency Runtime's Resource Manager to hand it user-mode schedulable (UMS) threads. Диспетчер ресурсов среды выполнения с параллелизмом использует этот интерфейс для взаимодействия с планировщиками потоков UMS.The Resource Manager uses this interface to communicate with UMS thread schedulers. Интерфейс IUMSScheduler наследует от интерфейса IScheduler .The IUMSScheduler interface inherits from the IScheduler interface.
Структура IUMSThreadProxyIUMSThreadProxy Structure Абстракция для потока выполнения.An abstraction for a thread of execution. Если требуется предоставлять для планировщика потоки планировщика в пользовательском режиме (UMS), задайте для элемента политики планировщика SchedulerKind значение UmsThreadDefault и реализуйте интерфейс IUMSScheduler.If you want your scheduler to be granted user-mode schedulable (UMS) threads, set the value for the scheduler policy element SchedulerKind to UmsThreadDefault, and implement the IUMSScheduler interface. Потоки UMS поддерживаются только в 64-разрядных операционных системах Windows 7 и более поздних версий.UMS threads are only supported on 64-bit operating systems with version Windows 7 and higher.
Структура IUMSUnblockNotificationIUMSUnblockNotification Structure Представляет уведомление диспетчера ресурсов о том, что прокси-поток, который заблокировал и запустил возврат к заданному контексту планирования планировщика, разблокирован и готов для планирования.Represents a notification from the Resource Manager that a thread proxy which blocked and triggered a return to the scheduler's designated scheduling context has unblocked and is ready to be scheduled. Этот интерфейс является недопустимым, когда связанный с прокси-потоком контекст выполнения, возвращенный из метода GetContext, переносится.This interface is invalid once the thread proxy's associated execution context, returned from the GetContext method, is rescheduled.
Структура IVirtualProcessorRootIVirtualProcessorRoot Structure Абстракция для аппаратного потока, в котором может выполняться прокси-поток.An abstraction for a hardware thread on which a thread proxy can execute.
Структура scheduler_interfacescheduler_interface Structure Интерфейс планировщикаScheduler Interface
Структура scheduler_ptr (среда выполнения с параллелизмом)scheduler_ptr Structure (Concurrency Runtime) Представляет указатель на планировщик.Represents a pointer to a scheduler. Этот класс существует, чтобы разрешить спецификацию общего времени существования с помощью shared_ptr или просто простой ссылки с помощью необработанного указателя.This class exists to allow the specification of a shared lifetime by using shared_ptr or just a plain reference by using raw pointer.

ПеречисленияEnumerations

ИмяName ОписаниеDescription
agent_statusagent_status Допустимые состояния для объекта agent.The valid states for an agent.
Agents_EventTypeAgents_EventType Типы событий, которые можно отслеживать с помощью функции трассировки, предоставляемой библиотекой агентов.The types of events that can be traced using the tracing functionality offered by the Agents Library
ConcRT_EventTypeConcRT_EventType Типы событий, которые можно отслеживать с помощью функций трассировки, обеспечиваемых средой выполнения с параллелизмом.The types of events that can be traced using the tracing functionality offered by the Concurrency Runtime.
Concrt_TraceFlagsConcrt_TraceFlags Флажки трассировки для типов событийTrace flags for the event types
критикалрегионтипеCriticalRegionType Тип критической области, внутри которой находится контекст.The type of critical region a context is inside.
динамикпрогрессфидбакктипеDynamicProgressFeedbackType Используется политикой DynamicProgressFeedback для описания того, будет ли к ресурсам планировщика применена повторная балансировка в соответствии со статистическими данными, полученными из планировщика, или только на основе перехода виртуальных процессоров в состояние бездействия и из него через вызовы методов Activate и Deactivate для интерфейса IVirtualProcessorRoot.Used by the DynamicProgressFeedback policy to describe whether resources for the scheduler will be rebalanced according to statistical information gathered from the scheduler or only based on virtual processors going in and out of the idle state through calls to the Activate and Deactivate methods on the IVirtualProcessorRoot interface. Дополнительные сведения о доступных политиках планировщика см. в разделе полициелементкэй.For more information on available scheduler policies, see PolicyElementKey.
join_typejoin_type Тип блока обмена сообщениями join.The type of a join messaging block.
message_statusmessage_status Допустимые ответы на предложение объекта message блоку.The valid responses for an offer of a message object to a block.
полициелементкэйPolicyElementKey Ключи политики, описывающие аспекты поведения планировщика.Policy keys describing aspects of scheduler behavior. Каждый элемент политики описан с помощью пары «ключ — значение».Each policy element is described by a key-value pair. Дополнительные сведения о политиках планировщика и их влиянии на планировщики см. в разделе планировщик задач.For more information about scheduler policies and their impact on schedulers, see Task Scheduler.
SchedulerTypeSchedulerType Используется политикой SchedulerKind для описания типа потоков, которые должен использовать планировщик для базовых контекстов выполнения.Used by the SchedulerKind policy to describe the type of threads that the scheduler should utilize for underlying execution contexts. Дополнительные сведения о доступных политиках планировщика см. в разделе полициелементкэй.For more information on available scheduler policies, see PolicyElementKey.
счедулингпротоколтипеSchedulingProtocolType Используется политикой SchedulingProtocol для описания того, какой алгоритм планирования будет использоваться для планировщика.Used by the SchedulingProtocol policy to describe which scheduling algorithm will be utilized for the scheduler. Дополнительные сведения о доступных политиках планировщика см. в разделе полициелементкэй.For more information on available scheduler policies, see PolicyElementKey.
свитчингпроксистатеSwitchingProxyState Используется для обозначения состояния прокси-потока, когда он выполняет совместное переключение контекста на другой прокси-поток.Used to denote the state a thread proxy is in, when it is executing a cooperative context switch to a different thread proxy.
task_group_statustask_group_status Описывает состояние выполнения объекта task_group или structured_task_group.Describes the execution status of a task_group or structured_task_group object. Значение этого типа возвращается многочисленными методами, которые ожидают выполнения задач, запланированных для завершения группой задач.A value of this type is returned by numerous methods that wait on tasks scheduled to a task group to complete.
винртинитиализатионтипеWinRTInitializationType Используется политикой WinRTInitialization для описания того, будет ли среда выполнения Windows инициализирована в потоках планировщика для приложения, которое работает в операционных системах Windows с версии 8 или выше, и каким образом это будет выполняться.Used by the WinRTInitialization policy to describe whether and how the Windows Runtime will be initialized on scheduler threads for an application which runs on operating systems with version Windows 8 or higher. Дополнительные сведения о доступных политиках планировщика см. в разделе полициелементкэй.For more information on available scheduler policies, see PolicyElementKey.

ФункцииFunctions

ИмяName ОписаниеDescription
Функция AllocAlloc Function Выделяет блок памяти указанного размера из подраспределителя кэширования среды параллелизма.Allocates a block of memory of the size specified from the Concurrency Runtime Caching Suballocator.
Функция asendasend Function Перегружен.Overloaded. Асинхронная операция отправки, которая планирует задачу для распространения данных в целевой блок.An asynchronous send operation, which schedules a task to propagate the data to the target block.
Функция cancel_current_taskcancel_current_task Function Отменяет выполняющуюся в данный момент задачу.Cancels the currently executing task. Эту функцию можно вызывать из тела задачи, чтобы прервать выполнение задачи и перевести ее в состояние canceled.This function can be called from within the body of a task to abort the task's execution and cause it to enter the canceled state.

Вызов этой функции является неподдерживаемым сценарием, если вы не находитесь в теле task.It is not a supported scenario to call this function if you are not within the body of a task. Это приведет к неопределенному поведению, такому как сбой или нереагирование в приложении.Doing so will result in undefined behavior such as a crash or unresponsiveness in your application.
Функция create_asynccreate_async Function Создает асинхронную конструкцию среды выполнения Windows на основе предоставленного пользователем лямбда-выражения или объекта функции.Creates a Windows Runtime asynchronous construct based on a user supplied lambda or function object. Тип возвращаемого значения create_async — один из следующих: IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ или IAsyncOperationWithProgress<TResult, TProgress>^, в зависимости от сигнатуры лямбда-выражения, переданного методу.The return type of create_async is one of either IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^, or IAsyncOperationWithProgress<TResult, TProgress>^ based on the signature of the lambda passed to the method.
Функция create_taskcreate_task Function Перегружен.Overloaded. Создает объект задачи PPL.Creates a PPL task object. Функция create_task может использоваться в любой ситуации, где бы вы использовали конструктор задач.create_task can be used anywhere you would have used a task constructor. Он предоставляется преимущественно для удобства, так как он позволяет использовать auto ключевое слово при создании задач.It is provided mainly for convenience, because it allows use of the auto keyword while creating tasks.
Функция CreateResourceManagerCreateResourceManager Function Возвращает интерфейс, который представляет одноэлементный экземпляр диспетчера ресурсов среды выполнения с параллелизмом.Returns an interface that represents the singleton instance of the Concurrency Runtime's Resource Manager. Диспетчер ресурсов отвечает за назначение ресурсов планировщикам, которым требуется взаимодействовать друг с другом.The Resource Manager is responsible for assigning resources to schedulers that want to cooperate with each other.
Функция DisableTracingDisableTracing Function Отключает трассировку в среде выполнения с параллелизмом.Disables tracing in the Concurrency Runtime. Эту функция не рекомендуется использовать, поскольку трассировка событий Windows по умолчанию не регистрируется.This function is deprecated because ETW tracing is unregistered by default.
Функция EnableTracingEnableTracing Function Включает трассировку в среде выполнения с параллелизмом.Enables tracing in the Concurrency Runtime. Эта функция не рекомендована к использованию, поскольку трассировка событий Windows теперь по умолчанию включена.This function is deprecated because ETW tracing is now on by default.
Бесплатная функцияFree Function Освобождает блок памяти, ранее выделенный методом Alloc для подраспределителя кэширования среды выполнения с параллелизмом.Releases a block of memory previously allocated by the Alloc method to the Concurrency Runtime Caching Suballocator.
Функция get_ambient_scheduler (среда выполнения с параллелизмом)get_ambient_scheduler Function (Concurrency Runtime)
Функция GetExecutionContextIdGetExecutionContextId Function Возвращает уникальный идентификатор, который можно назначить контексту выполнения, реализующему интерфейс IExecutionContext.Returns a unique identifier that can be assigned to an execution context that implements the IExecutionContext interface.
Функция GetOSVersionGetOSVersion Function Возвращает версию операционной системы.Returns the operating system version.
Функция GetProcessorCountGetProcessorCount Function Возвращает число аппаратных потоков базовой системы.Returns the number of hardware threads on the underlying system.
Функция GetProcessorNodeCountGetProcessorNodeCount Function Возвращает число узлов NUMA или пакетов процессора в базовой системе.Returns the number of NUMA nodes or processor packages on the underlying system.
Функция ЖетсчедулеридGetSchedulerId Function Возвращает уникальный идентификатор, который можно назначить планировщику, реализующему интерфейс IScheduler.Returns a unique identifier that can be assigned to a scheduler that implements the IScheduler interface.
Функция interruption_pointinterruption_point Function Создает точку прерывания для отмены.Creates an interruption point for cancellation. Если отмена выполняется в контексте, где вызывается эта функция, это создает внутреннее исключение, которое прерывает текущую выполняемую параллельную работу.If a cancellation is in progress in the context where this function is called, this will throw an internal exception that aborts the execution of the currently executing parallel work. Если отмена не выполняется, функция ничего не делает.If cancellation is not in progress, the function does nothing.
Функция is_current_task_group_cancelingis_current_task_group_canceling Function Возвращает значение, указывающее, находится ли группа задач, которая в данный момент выполняется в текущем контексте во встроенном режиме, в процессе активной отмены (или вскоре перейдет в это состояние).Returns an indication of whether the task group which is currently executing inline on the current context is in the midst of an active cancellation (or will be shortly). Обратите внимание, что если в текущем контексте нет группы задач, выполняющейся в настоящий момент, false будет возвращено.Note that if there is no task group currently executing inline on the current context, false will be returned.
Функция make_choicemake_choice Function Перегружен.Overloaded. Конструирует блок сообщений choice из необязательного объекта Scheduler или ScheduleGroup и двух или более источников входных данных.Constructs a choice messaging block from an optional Scheduler or ScheduleGroup and two or more input sources.
Функция make_greedy_joinmake_greedy_join Function Перегружен.Overloaded. Конструирует блок сообщений greedy multitype_join из необязательного объекта Scheduler или ScheduleGroup и двух или более источников входных данных.Constructs a greedy multitype_join messaging block from an optional Scheduler or ScheduleGroup and two or more input sources.
Функция make_joinmake_join Function Перегружен.Overloaded. Конструирует блок сообщений non_greedy multitype_join из необязательного объекта Scheduler или ScheduleGroup и двух или более источников входных данных.Constructs a non_greedy multitype_join messaging block from an optional Scheduler or ScheduleGroup and two or more input sources.
Функция make_taskmake_task Function Метод фабрики для создания объекта task_handle.A factory method for creating a task_handle object.
Функция parallel_buffered_sortparallel_buffered_sort Function Перегружен.Overloaded. Упорядочивает элементы в указанном диапазоне в порядке убывания или в соответствии с критерием упорядочивания, заданным бинарным предикатом, в Parallel.Arranges the elements in a specified range into a non-descending order, or according to an ordering criterion specified by a binary predicate, in parallel. Эта функция семантически аналогична std::sort в том, что она является нестабильной сортировкой на месте на основе сравнения, за исключением того, что ей требуется O(n) дополнительного пространства и инициализация по умолчанию для сортируемых элементов.This function is semantically similar to std::sort in that it is a compare-based, unstable, in-place sort except that it needs O(n) additional space, and requires default initialization for the elements being sorted.
Функция parallel_forparallel_for Function Перегружен.Overloaded. parallel_for выполняет итерацию по диапазону индексов и выполняет предоставленную пользователем функцию в каждой итерации параллельно.parallel_for iterates over a range of indices and executes a user-supplied function at each iteration, in parallel.
Функция parallel_for_eachparallel_for_each Function Перегружен.Overloaded. parallel_for_each применяет указанную функцию к каждому элементу в диапазоне параллельно.parallel_for_each applies a specified function to each element within a range, in parallel. Эта функция семантически эквивалентна функции for_each в пространстве имен std, за исключением того, что итерация по элементам выполняется параллельно и порядок итерации не определен.It is semantically equivalent to the for_each function in the std namespace, except that iteration over the elements is performed in parallel, and the order of iteration is unspecified. Аргумент _Func должен поддерживать оператор вызова функции формы operator()(T), где параметр T является типом элемента контейнера, для которого выполняется итерация.The argument _Func must support a function call operator of the form operator()(T) where the parameter T is the item type of the container being iterated over.
Функция parallel_invokeparallel_invoke Function Перегружен.Overloaded. Выполняет объекты функции, предоставленные в виде параметров, в параллельном режиме и блокирует их до завершения выполнения.Executes the function objects supplied as parameters in parallel, and blocks until they have finished executing. Каждый объект функции может быть лямбда-выражением, указателем на функцию или любым объектом, который поддерживает оператор вызова функции с подписью void operator()().Each function object could be a lambda expression, a pointer to function, or any object that supports the function call operator with the signature void operator()().
Функция parallel_radixsortparallel_radixsort Function Перегружен.Overloaded. Располагает элементы в указанном диапазоне в неубывающем порядке, используя алгоритм сортировки основания системы счисления.Arranges elements in a specified range into an non descending order using a radix sorting algorithm. Это стабильная функция сортировки, для которой требуется функция проекции, способная проецировать сортируемые элементы в неподписанные ключи целочисленного типа.This is a stable sort function which requires a projection function that can project elements to be sorted into unsigned integer-like keys. Для сортируемых элементов требуется инициализация по умолчанию.Default initialization is required for the elements being sorted.
Функция parallel_reduceparallel_reduce Function Перегружен.Overloaded. Параллельно вычисляет сумму всех элементов в указанном диапазоне путем вычисления последовательных частичных сумм или вычисляет результаты последовательных частичных сумм, полученных сходным образом с использованием указанной бинарной операции, отличной от суммирования.Computes the sum of all elements in a specified range by computing successive partial sums, or computes the result of successive partial results similarly obtained from using a specified binary operation other than sum, in parallel. parallel_reduce семантически аналогичен std::accumulate, но требует, чтобы бинарная операция была ассоциативна, а также значение идентификатора вместо начального значения.parallel_reduce is semantically similar to std::accumulate, except that it requires the binary operation to be associative, and requires an identity value instead of an initial value.
Функция parallel_sortparallel_sort Function Перегружен.Overloaded. Упорядочивает элементы в указанном диапазоне в порядке убывания или в соответствии с критерием упорядочивания, заданным бинарным предикатом, в Parallel.Arranges the elements in a specified range into a non-descending order, or according to an ordering criterion specified by a binary predicate, in parallel. Эта функция семантически схожа с std::sort, так как она основана на сравнении, неустойчива, сортирует на месте.This function is semantically similar to std::sort in that it is a compare-based, unstable, in-place sort.
Функция parallel_transformparallel_transform Function Перегружен.Overloaded. Применяет заданный объект функции к каждому элементу в исходном диапазоне или к паре элементов из двух исходных диапазонов и параллельно копирует возвращаемые значения объекта функции в диапазон назначения.Applies a specified function object to each element in a source range, or to a pair of elements from two source ranges, and copies the return values of the function object into a destination range, in parallel. Эта функция семантически эквивалентна std::transform.This functional is semantically equivalent to std::transform.
Функция receivereceive Function Перегружен.Overloaded. Общая реализация получения, позволяющая контексту ожидать данные строго из одного источника и фильтровать значения, которые принимаются.A general receive implementation, allowing a context to wait for data from exactly one source and filter the values that are accepted.
Функция run_with_cancellation_tokenrun_with_cancellation_token Function Немедленно и синхронно выполняет объект функции в контексте заданного токена отмены.Executes a function object immediately and synchronously in the context of a given cancellation token.
Функция sendsend Function Перегружен.Overloaded. Синхронная операции отправки, которая ожидает принятия или отклонения сообщения целевым объектом.A synchronous send operation, which waits until the target either accepts or declines the message.
Функция set_ambient_scheduler (среда выполнения с параллелизмом)set_ambient_scheduler Function (Concurrency Runtime)
Функция set_task_execution_resourcesset_task_execution_resources Function Перегружен.Overloaded. Ограничивает ресурсы выполнения, используемые внутренними рабочими потоками среды выполнения с параллелизмом, определенным набором сходства.Restricts the execution resources used by the Concurrency Runtime internal worker threads to the affinity set specified.

Этот метод можно вызывать только до создания диспетчера ресурсов или между двумя периодами существования диспетчера ресурсов.It is valid to call this method only before the Resource Manager has been created, or between two Resource Manager lifetimes. Его можно вызывать несколько раз при условии, что в момент вызова диспетчер ресурсов не существует.It can be invoked multiple times as long as the Resource Manager does not exist at the time of invocation. После задания ограничения сходства оно будет оставаться действительным до следующего допустимого вызова метода set_task_execution_resources.After an affinity limit has been set, it remains in effect until the next valid call to the set_task_execution_resources method.

Предоставленная маска сходства не обязана быть подмножеством маски сходства процесса.The affinity mask provided need not be a subset of the process affinity mask. Сходство процесса обновляется при необходимости.The process affinity will be updated if necessary.
Функция swapswap Function Меняет местами элементы двух объектов concurrent_vector.Exchanges the elements of two concurrent_vector objects.
Функция task_from_exception (среда выполнения с параллелизмом)task_from_exception Function (Concurrency Runtime)
Функция task_from_result (среда выполнения с параллелизмом)task_from_result Function (Concurrency Runtime)
Функция Trace_agents_register_nameTrace_agents_register_name Function Связывает данное имя с блоком сообщений или агентом в трассировки событий Windows.Associates the given name to the message block or agent in the ETW trace.
Функция try_receivetry_receive Function Перегружен.Overloaded. Общая реализация проверки-получения, позволяющая контексту выполнять поиск данных строго из одного источника и фильтровать значения, которые принимаются.A general try-receive implementation, allowing a context to look for data from exactly one source and filter the values that are accepted. Если данные не готовы, метод вернет значение False.If the data is not ready, the method will return false.
Wait, функцияwait Function Приостанавливает текущий контекст на указанный период времени.Pauses the current context for a specified amount of time.
Функция when_allwhen_all Function Создает задачу, которая завершается успешно, если все задачи, предоставленные в качестве аргументов, завершаются успешно.Creates a task that will complete successfully when all of the tasks supplied as arguments complete successfully.
Функция when_anywhen_any Function Перегружен.Overloaded. Создает задачу, которая завершается успешно, если любая из задач, предоставленных в качестве аргументов, завершается успешно.Creates a task that will complete successfully when any of the tasks supplied as arguments completes successfully.

ОператорыOperators

ИмяName ОписаниеDescription
operator! =operator!= Проверяет неравенство объекта concurrent_vector слева от оператора объекту concurrent_vector справа от оператора.Tests if the concurrent_vector object on the left side of the operator is not equal to the concurrent_vector object on the right side.
Оператор&&operator&& Перегружен.Overloaded. Создает задачу, которая будет успешно выполнена при успешном завершении обеих задач в качестве аргументов.Creates a task that will complete successfully when both of the tasks supplied as arguments complete successfully.
оператор||operator|| Перегружен.Overloaded. Создает задачу, которая завершается успешно, если любая из задач, предоставленных в качестве аргументов, завершается успешно.Creates a task that will complete successfully when either of the tasks supplied as arguments completes successfully.
Оператор<operator< Проверяет, меньше ли объект concurrent_vector слева от оператора, чем объект concurrent_vector справа от оператора.Tests if the concurrent_vector object on the left side of the operator is less than the concurrent_vector object on the right side.
Оператор<=operator<= Проверяет, меньше ли объект concurrent_vector слева от оператора, чем объект concurrent_vector справа от оператора, или равен ему.Tests if the concurrent_vector object on the left side of the operator is less than or equal to the concurrent_vector object on the right side.
Оператор = =operator== Проверяет равенство объекта concurrent_vector слева от оператора объекту concurrent_vector справа от оператора.Tests if the concurrent_vector object on the left side of the operator is equal to the concurrent_vector object on the right side.
Оператор>operator> Проверяет больше ли объект concurrent_vector слева от оператора, чем объект concurrent_vector справа от оператора.Tests if the concurrent_vector object on the left side of the operator is greater than the concurrent_vector object on the right side.
Оператор>=operator>= Проверяет больше ли объект concurrent_vector слева от оператора, чем объект concurrent_vector справа от оператора, или равен ему.Tests if the concurrent_vector object on the left side of the operator is greater than or equal to the concurrent_vector object on the right side.

КонстантыConstants

ИмяName ОписаниеDescription
ажентевентгуидAgentEventGuid GUID категории ({B9B5B78C-0713-4898-A21A-C67949DCED07}), описывающий события трассировки Windows, запускаемые библиотекой агентов исполняющей среды с параллелизмом.A category GUID ({B9B5B78C-0713-4898-A21A-C67949DCED07}) describing ETW events fired by the Agents library in the Concurrency Runtime.
чоривентгуидChoreEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с делами или задачами.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to chores or tasks.
ConcRT_ProviderGuidConcRT_ProviderGuid GUID поставщика трассировки событий Windows для среды выполнения с параллелизмом.The ETW provider GUID for the Concurrency Runtime.
CONCRT_RM_VERSION_1CONCRT_RM_VERSION_1 Указывает на поддержку интерфейса диспетчера ресурсов, определенного в Visual Studio 2010.Indicates support of the Resource Manager interface defined in Visual Studio 2010.
конкртевентгуидConcRTEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые не описаны подробнее другой категорией.A category GUID describing ETW events fired by the Concurrency Runtime that are not more specifically described by another category.
контекстевентгуидContextEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с контекстами.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to contexts.
COOPERATIVE_TIMEOUT_INFINITECOOPERATIVE_TIMEOUT_INFINITE Значение, указывающее, что время ожидания никогда не должно истечь.Value indicating that a wait should never time out.
COOPERATIVE_WAIT_TIMEOUTCOOPERATIVE_WAIT_TIMEOUT Значение, указывающее, что время ожидания истекло.Value indicating that a wait timed out.
INHERIT_THREAD_PRIORITYINHERIT_THREAD_PRIORITY Специальное значение для ключа политики ContextPriority, указывающее, что приоритет потока всех контекстов в планировщике должен быть таким же, как приоритет потока, создавшего планировщик.Special value for the policy key ContextPriority indicating that the thread priority of all contexts in the scheduler should be the same as that of the thread which created the scheduler.
локкевентгуидLockEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с блокировками.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to locks.
максексекутионресаурцесMaxExecutionResources Специальное значение для ключей политики MinConcurrency и MaxConcurrency.Special value for the policy keys MinConcurrency and MaxConcurrency. По умолчанию соответствует числу аппаратных потоков на компьютере при отсутствии других ограничений.Defaults to the number of hardware threads on the machine in the absence of other constraints.
пплпараллелфореачевентгуидPPLParallelForeachEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с использованием функции parallel_for_each.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to usage of the parallel_for_each function.
пплпараллелфоревентгуидPPLParallelForEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с использованием функции parallel_for.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to usage of the parallel_for function.
пплпараллелинвокивентгуидPPLParallelInvokeEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с использованием функции parallel_invoke.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to usage of the parallel_invoke function.
ресаурцеманажеревентгуидResourceManagerEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с диспетчером ресурсов.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to the resource manager.
счедулеграупевентгуидScheduleGroupEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с группами расписаний.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to schedule groups.
счедулеревентгуидSchedulerEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с действиями планировщика.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to scheduler activity.
виртуалпроцессоревентгуидVirtualProcessorEventGuid GUID категории, описывающий события трассировки событий Windows, инициированные средой выполнения с параллелизмом, которые непосредственно связаны с виртуальными процессорами.A category GUID describing ETW events fired by the Concurrency Runtime that are directly related to virtual processors.

ТребованияRequirements

Header: 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, пплконкрт. h, пплинтерфаце. h, из ppltasks. hHeader: 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

См. также разделSee also

СсылкиReference