Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Объект 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 объект.