Класс combinable

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

Синтаксис

template<typename T>
class combinable;

Параметры

T
Тип данных окончательного объединенного результата. Тип должен иметь конструктор копирования и конструктор по умолчанию.

Участники

Открытые конструкторы

Имя Описание
Комбинируется Перегружен. Создает новый объект combinable.
~комбинируемый деструктор Уничтожает объект combinable .

Открытые методы

Имя Описание
пусто Очищает любые промежуточные вычислительные результаты из предыдущего использования.
combine Вычисляет окончательное значение из набора локальных вычислений потока путем вызова предоставленного functor объединения.
combine_each Вычисляет окончательное значение из набора локальных вложенных вычислений потока путем вызова предоставленного functor один раз для каждого локального подсчитывания потока. Окончательный результат накапливается объектом функции.
local Перегружен. Возвращает ссылку на вложенные вычисления потока.

Открытые операторы

Имя Описание
operator= Назначает объекту из другого combinablecombinable объекта.

Замечания

Дополнительные сведения см. в разделе "Параллельные контейнеры и объекты".

Иерархия наследования

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=

Назначает объекту из другого combinablecombinable объекта.

combinable& operator= (const combinable& _Copy);

Параметры

_Копировать
Существующий combinable объект, скопированный в этот объект.

Возвращаемое значение

Ссылка на этот combinable объект.

См. также

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