Функция 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

См. также

Ссылки

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

Основные понятия

Параллелизм задач (среда выполнения с параллелизмом)