Share via


task_group::run_and_wait 方法

排程工作以內嵌方式執行於呼叫內容,並以 task_group 物件協助支援完整的取消作業。 函式接著會等候直到 task_group 物件上的所有工時已完成或取消。 如果將 task_handle 物件做為參數傳遞到 run_and_wait,呼叫端會負責管理 task_handle 物件的存留期。

template<
   class _Function
>
task_group_status run_and_wait(
   task_handle<_Function>& _Task_handle
);

template<
   class _Function
>
task_group_status run_and_wait(
   const _Function& _Func
);

參數

  • _Function
    欲叫用以執行工作主體之函式物件的型別。

  • _Task_handle
    工作控制代碼,將會在呼叫內容上內嵌執行。 請注意,呼叫端必須負責此物件的存留期。 執行階段會繼續預期它存留,直到 run_and_wait 方法完成執行為止。

  • _Func
    用於叫用工作本體的函式。 這可能是 Lambda 運算式或其他支援函式呼叫運算子與簽章 void operator()() 版本的物件。

傳回值

表示已完成等候或工作群組已取消,原因是明確取消作業或從其中一個工作擲回例外狀況。 如需詳細資訊,請參閱 task_group_status

備註

請注意,一或多個排程至此 task_group 物件的工作可以在呼叫內容上內嵌執行。

如果排程至此 task_group 物件的一或多個工作擲回例外狀況,執行階段會選取其中一個例外狀況,並將它傳播至 run_and_wait 方法以外。

task_group 物件上的 run_and_wait方法傳回時,執行階段會將物件重設為清除狀態,以重複使用。 這包括 task_group 物件已取消的情況。

在執行的非例外狀況路徑中,您必須先呼叫這個方法或 wait 方法, task_group 的解構函式才能執行。

需求

標頭: ppl.h

**命名空間:**concurrency

請參閱

參考

task_group 類別

task_group::run 方法

task_group::wait 方法

概念

工作平行處理原則 (並行執行階段)