共用方式為


structured_task_group 類別

structured_task_group 類別代表平行工作的高度結構化集合。 您可以使用 task_handle 物件,將個別平行工作佇列到 structured_task_group 中並等候這些工作完成,也可以在工作完成執行前取消工作群組,這樣會中止所有尚未開始執行的工作。

class structured_task_group;

成員

公用建構函式

名稱

說明

structured_task_group::structured_task_group 建構函式

多載。 建構新的 structured_task_group 物件。

structured_task_group::~structured_task_group 解構函式

終結 structured_task_group 物件。 您應在解構函式執行前在物件上呼叫 waitrun_and_wait 方法,除非執行解構函式是因例外狀況而回溯堆疊的結果。

公用方法

名稱

說明

structured_task_group::cancel 方法

儘可能取消以此工作群組為根的工作之樹狀子目錄。 如果可能,會以可轉移方式取消工作群組中所有排定的工作。

structured_task_group::is_canceling 方法

會通知呼叫端目前是否正在取消工作群組。 這不一定表示在 structured_task_group 物件上呼叫 cancel 方法 (雖然這樣一定可以讓此方法傳回 true)。 可能是 structured_task_group 物件正以內嵌方式執行,而且已取消工作樹狀結構中的工作群組。 在這類的情況下,當執行階段可以預先判斷取消會流經這個 structured_task_group 物件時,也會傳回 true

structured_task_group::run 方法

多載。 在 structured_task_group 物件上排程工作。 呼叫端會管理在 _Task_handle參數中傳遞之 task_handle 物件的存留期。 採用 _Placement 參數的版本會造成工作被偏移往執行該參數所指定的位置。

structured_task_group::run_and_wait 方法

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

structured_task_group::wait 方法

等候直到 structured_task_group 的所有工作皆已完成或取消。

備註

為了達到效能,structured_task_group 物件的使用方式有許多嚴格的限制:

  • 單一 structured_task_group 物件不能由多個執行緒使用。 structured_task_group 物件上的所有作業必須由建立該物件的執行緒執行。 此規則的兩個例外狀況是成員函式 cancelis_canceling。 物件不可在 Lambda 運算式的擷取清單中,也不可用於工作中,除非該工作使用其中一種取消作業。

  • 排定至 structured_task_group 物件的所有工作均是透過使用 task_handle 物件排定的,在此物件中,您必須明確地管理其存留期。

  • 多個群組只能用於絕對巢狀順序。 如果宣告兩個 structured_task_group 物件,必須在所有方法之前解構第二個宣告 (內部的) 物件,但必須在宣告第一個 (外部的) 物件時呼叫 cancelis_canceling 方法。 無論只是在相同的或功能巢狀的範圍中宣告多個 structured_task_group 物件,或是轉換透過 runrun_and_wait 方法排入 structured_task_group 佇列的工作,這個條件都為 True。

  • 不同於一般 task_group 類別,structured_task_group 類別中的所有狀態都是最終的。 將工作排程至群組並等候工作完成之後,您就不能再使用同樣的群組。

如需詳細資訊,請參閱工作平行處理原則 (並行執行階段)

繼承階層

structured_task_group

需求

標頭: ppl.h

**命名空間:**concurrency

請參閱

參考

concurrency 命名空間

task_group 類別

task_handle 類別