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 物件上呼叫 wait 或 run_and_wait 方法。
備註
執行階段會將提供的工作函式排定在以後的時間執行,這可能是在呼叫函式返回後執行。這個方法會使用 task_handle 物件來保存提供的工作函式複本。因此,在您傳遞至此方法之函式物件中發生的任何狀態變更都不會在該函式物件的複本中出現。此外,確定您以指標或透過參考傳遞到工作函式之任何物件的生命線在工作函式傳回之前仍然有效。
如果 task_group 因堆疊從例外狀況回溯而解構,您不需要保證已呼叫 wait 或 run_and_wait 方法。在這種情況下,解構函式會適當地取消並等候以 _Task_handle 參數表示的工作完成。
如果 _Task_handle參數指定的工作控制代碼已排定到工作群組物件 (透過 run 方法),而且該工作群組已經沒有 wait 或 run_and_wait 方法的中間呼叫,方法會擲回 invalid_multiple_scheduling例外狀況。
需求
標頭: ppl.h
Namespace: 並行存取