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


Функция when_any

Создает задачу, которая будет выполнена успешно, если любая из задача, предоставленных как аргументы, выполнена успешно.

template<
   typename _Iterator
>
auto when_any(
   _Iterator_Begin,
   _Iterator_End,
   const task_options& _TaskOptions = task_options()
) -> decltype (details::_WhenAnyImpl<typename std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(_TaskOptions, _Begin, _End));

template<
   typename _Iterator
>
auto when_any(
   _Iterator_Begin,
   _Iterator_End,
   cancellation_token _CancellationToken
) -> decltype (details::_WhenAnyImpl<typename std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(_CancellationToken._GetImplValue(), _Begin, _End));

Параметры

  • _Iterator
    Тип итератора ввода.

  • _Begin
    Позиция первого элемента в диапазоне элементов, которые будут объединены в результирующую задачу.

  • _End
    Позиция первого элемента за пределами диапазона элементов, которые будут объединены в результирующую задачу.

  • _TaskOptions

  • _CancellationToken
    Токен отмены, который управляет отменой возвращаемой задачи. Если вы не предоставите токен отмены, результирующая задача получает токен отмены задачи, который необходимо выполнить.

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

Задача, которая завершается успешно, если одна из задач ввода завершена успешно. Если выходные задачи — типа T, то выходные данные этой функции — task<std::pair<T, size_t>>>, где первый элемент пары — результат завершения задачи, а второй элемент — индекс задачи, которая закончилась. Если входные задачи — типа void, то результатом является task<size_t>, где результат — индекс завершаемой задачи.

Заметки

when_any — это неблокирующая функция, в результате работы которой создается task. В отличие от task::wait, эту функцию можно безопасно вызывать в приложении Магазин Windows в потоке ASTA (STA приложений).

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

Требования

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

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

См. также

Ссылки

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

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

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