Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Объект combinable<T> предназначен для предоставления частной для потока копии данных для выполнения локальных для потока вложенных вычислений без блокировки потока в параллельных алгоритмах. В конце выполнения параллельной операции частные для потока вложенные вычисления можно объединить для получения общего результата. Этот класс можно использовать вместо общей переменной, что может позволить улучшить производительность в случае возникновения большого числа конфликтов доступа к этой общей переменной.
Синтаксис
template<typename T>
class combinable;
Параметры
T
Тип данных окончательного объединенного результата. Тип должен иметь конструктор копирования и конструктор по умолчанию.
Участники
Открытые конструкторы
| Имя | Описание |
|---|---|
| Комбинируется | Перегружен. Создает новый объект combinable. |
| ~комбинируемый деструктор | Уничтожает объект combinable . |
Открытые методы
| Имя | Описание |
|---|---|
| пусто | Очищает любые промежуточные вычислительные результаты из предыдущего использования. |
| combine | Вычисляет окончательное значение из набора локальных вычислений потока путем вызова предоставленного functor объединения. |
| combine_each | Вычисляет окончательное значение из набора локальных вложенных вычислений потока путем вызова предоставленного functor один раз для каждого локального подсчитывания потока. Окончательный результат накапливается объектом функции. |
| local | Перегружен. Возвращает ссылку на вложенные вычисления потока. |
Открытые операторы
| Имя | Описание |
|---|---|
| operator= | Назначает объекту из другого combinable combinable объекта. |
Замечания
Дополнительные сведения см. в разделе "Параллельные контейнеры и объекты".
Иерархия наследования
combinable
Требования
Заголовок: ppl.h
Пространство имен: concurrency
clear
Очищает любые промежуточные вычислительные результаты из предыдущего использования.
void clear();
Комбинируется
Создает новый объект combinable.
combinable();
template <typename _Function>
explicit combinable(_Function _FnInitialize);
combinable(const combinable& _Copy);
Параметры
_Функция
Тип объекта functor инициализации.
_FnInitialize
Функция, которая будет вызываться для инициализации каждого нового частного потока типа T. Он должен поддерживать оператор вызова функции с сигнатурой T ().
_Копировать
Существующий combinable объект, скопированный в этот объект.
Замечания
Первый конструктор инициализирует новые элементы с конструктором по умолчанию для типа T.
Второй конструктор инициализирует новые элементы с помощью functor инициализации, предоставленного _FnInitialize в качестве параметра.
Третий конструктор — конструктор копирования.
~Комбинируется
Уничтожает объект combinable .
~combinable();
combine
Вычисляет окончательное значение из набора локальных вычислений потока путем вызова предоставленного functor объединения.
template<typename _Function>
T combine(_Function _FnCombine) const;
Параметры
_Функция
Тип объекта функции, который будет вызываться для объединения двух вычислений вложенного потока.
_FnCombine
Functor, используемый для объединения вложенных вычислений. Его подпись или T (T, T) T (const T&, const T&), и она должна быть ассоциативной и коммутативной.
Возвращаемое значение
Окончательный результат объединения всех вложенных вычислений в потоке.
combine_each
Вычисляет окончательное значение из набора локальных вложенных вычислений потока путем вызова предоставленного functor один раз для каждого локального подсчитывания потока. Окончательный результат накапливается объектом функции.
template<typename _Function>
void combine_each(_Function _FnCombine) const;
Параметры
_Функция
Тип объекта функции, который будет вызываться для объединения однопотоковых локальных вложенных вычислений.
_FnCombine
Functor, используемый для объединения одного подсчитаного вычисления. Его подпись имеет void (T) или void (const T&)должен быть ассоциативным и коммутативным.
Локальная среда
Возвращает ссылку на вложенные вычисления потока.
T& local();
T& local(bool& _Exists);
Параметры
_Существует
Ссылка на логическое значение. Логическое значение, на которое ссылается этот аргумент, будет задано true , если в этом потоке уже существовало подсчетное вычисление, и задайте значение false , если это был первый подсчет в этом потоке.
Возвращаемое значение
Ссылка на вложенные вычисления потока.
operator=
Назначает объекту из другого combinable combinable объекта.
combinable& operator= (const combinable& _Copy);
Параметры
_Копировать
Существующий combinable объект, скопированный в этот объект.
Возвращаемое значение
Ссылка на этот combinable объект.