Класс combinable
Объект 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
объект.