共用方式為


task_group::run 方法

task_group 物件上排程工作。 如果將 task_handle 物件做為參數傳遞到 run,呼叫端會負責管理 task_handle 物件的存留期。 將函式物件當成參數參考的方法的版本與執行階段中的堆疊配置有關,其效果可能不如使用參考 task_handle 物件的版本。 採用 _Placement 參數的版本會造成工作被偏移往執行該參數所指定的位置。

template<
   typename _Function
>
void run(
   const _Function& _Func
);

template<
   typename _Function
>
void run(
   const _Function& _Func,
   location& _Placement
);

template<
   typename _Function
>
void run(
   task_handle<_Function>& _Task_handle
);

template<
   typename _Function
>
void run(
   task_handle<_Function>& _Task_handle,
   location& _Placement
);

參數

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

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

  • _Placement
    為 _Func 參數所表示的工作應該執行位置的參考。

  • _Task_handle
    正在排程工時的控制代碼。 請注意,呼叫端必須負責此物件的存留期。 執行階段會繼續預期它仍存留,直到在這個 task_group 物件上呼叫 waitrun_and_wait 方法。

備註

執行階段會將提供的工作函式排定在以後的時間執行,這可能是在呼叫函式返回後執行。 這個方法會使用 task_handle 物件來保存提供的工作函式複本。 因此,在您傳遞至此方法之函式物件中發生的任何狀態變更都不會在該函式物件的複本中出現。 此外,確定您以指標或透過參考傳遞到工作函式之任何物件的生命線在工作函式傳回之前仍然有效。

如果 task_group 因堆疊從例外狀況回溯而解構,您不需要保證已呼叫 waitrun_and_wait 方法。 在這種情況下,解構函式會適當地取消並等候以 _Task_handle 參數表示的工作完成。

如果 _Task_handle參數指定的工作控制代碼已排定到工作群組物件 (透過 run 方法),而且該工作群組已經沒有 waitrun_and_wait 方法的中間呼叫,方法會擲回 invalid_multiple_scheduling例外狀況。

需求

標頭: ppl.h

**命名空間:**concurrency

請參閱

參考

task_group 類別

task_group::wait 方法

task_group::run_and_wait 方法

location 類別

概念

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