Функция when_all
Создает задачу, которая завершается успешно, если все задачи, предоставленные в качестве аргументов, завершаются успешно.
template <
typename _Iterator
>
auto when_all(
_Iterator_Begin,
_Iterator_End,
const task_options& _TaskOptions = task_options()
) -> decltype (details::_WhenAllImpl<typename std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(_TaskOptions, _Begin, _End));
Параметры
_Iterator
Тип итератора ввода._Begin
Позиция первого элемента в диапазоне элементов, которые будут объединены в результирующую задачу._End
Позиция первого элемента за пределами диапазона элементов, которые будут объединены в результирующую задачу._TaskOptions
Возвращаемое значение
Задача, которая завершается успешно, если все входные задачи завершены успешно. Если входные задачи относятся к типу T, выводом этой функции будет task<std::vector<T>>. Если входные задачи относятся к типу void, выходная задача также будет task<void>.
Заметки
when_all — это неблокирующая функция, в результате работы которой создается task. В отличие от task::wait, эту функцию можно безопасно вызывать в приложении Магазин Windows в потоке ASTA (STA приложений).
Если одна из задач отменена или создает исключение, то возвращенная задача завершится рано, в отмененном состоянии, и исключение, если таковое встречено, возникнет при вызове task::get или task::wait для этой задачи.
Дополнительные сведения см. в разделе Параллелизм задач (среда выполнения с параллелизмом).
Требования
Заголовок: ppltasks.h
Пространство имен: concurrency