Поделиться через


Класс combinable

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

Синтаксис

template<typename T>
class combinable;

Параметры

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

Участники

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

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

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

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

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

Имя Описание
operator= Присваивает объекту combinable данные из объекта combinable.

Замечания

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

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

combinable

Требования

Заголовок: ppl.h

Пространство имен: конкурентность

очистить

Очищает любые промежуточные вычислительные результаты из предыдущего использования.

void clear();

Комбинируемый

Создает новый объект combinable.

combinable();

template <typename _Function>
explicit combinable(_Function _FnInitialize);

combinable(const combinable& _Copy);

Параметры

_Функция
Тип инициализации функторного объекта.

_FnInitialize
Функция, которая будет вызываться для инициализации каждого нового значения, приватного для потока, типа T. Он должен поддерживать оператор вызова функции с сигнатурой T ().

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

Замечания

Первый конструктор инициализирует новые элементы с конструктором по умолчанию для типа T.

Второй конструктор инициализирует новые элементы с помощью functor инициализации, предоставленного _FnInitialize в качестве параметра.

Третий конструктор — конструктор копирования.

~Комбинируемый

Уничтожает объект combinable .

~combinable();

объединить

Вычисляет итоговое значение из набора локальных вычислений потока, вызывая предоставленную объединяющую функцию.

template<typename _Function>
T combine(_Function _FnCombine) const;

Параметры

_Функция
Тип объекта функции, который будет вызываться для объединения двух поточных локальных подвычислений.

_FnCombine
Функтор, используемый для объединения подвычислений. Его подпись - это T (T, T) или T (const T&, const T&), и она должна быть ассоциативной и коммутативной.

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

Окончательный результат объединения всех вычислений, приватных для каждого потока.

combine_each

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

template<typename _Function>
void combine_each(_Function _FnCombine) const;

Параметры

_Функция
Тип объекта функции, который будет вызываться для объединения однопотоковых локальных вычислений.

_FnCombine
Функтор, используемый для объединения одной подвычислительной операции. Его подпись — void (T) или void (const T&), и она должна быть ассоциативной и коммутативной.

Локальная среда

Возвращает ссылку на частное для потока подвычисление.

T& local();

T& local(bool& _Exists);

Параметры

_Существует
Ссылка на булево значение. Логическое значение, на которое ссылается этот аргумент, будет установлено в true, если в этом потоке уже существовало подвычисление, и установлено в false, если это было первое подвычисление на этом потоке.

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

Ссылка на частные подвычисления потока.

operator=

Присваивает объекту combinable данные из объекта combinable.

combinable& operator= (const combinable& _Copy);

Параметры

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

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

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

См. также

Пространство имен параллелизм