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,在 ASTA (應用程式 STA) 執行緒上呼叫 Windows 市集應用程式的這個函式是安全的。
如果其中一個工作取消或擲回例外狀況,則傳回的工作會在已取消狀態中提早完成,而且例外狀況 (如果有發生) 會在您呼叫該工作上的 task::get 或 task::wait 時擲回。
如需詳細資訊,請參閱工作平行處理原則 (並行執行階段)。
需求
**標頭:**ppltasks.h
**命名空間:**concurrency