Aracılığıyla paylaş


structured_task_group Sınıfı

sınıfı, structured_task_group yüksek oranda yapılandırılmış bir paralel çalışma koleksiyonunu temsil eder. Tek tek paralel görevleri kullanarak task_handle bir structured_task_group nesneye kuyruğa alabilir ve tamamlanmasını bekleyebilir veya yürütmeyi tamamlamadan önce görev grubunu iptal edebilirsiniz; bu da yürütmeye başlamamış görevleri durdurur.

Sözdizimi

class structured_task_group;

Üyeler

Ortak Oluşturucular

Ad Tanım
Structured_task_group Aşırı yüklendi. Yeni structured_task_group bir nesne oluşturur.
~structured_task_group Yıkıcı Bir structured_task_group nesneyi yok eder. Bir özel durum nedeniyle yığın geri sarmalamanın bir sonucu olarak yıkıcı yürütülmediği sürece, yok edici yürütülmeden önce nesne üzerinde veya run_and_wait yöntemini çağırmanız wait beklenir.

Genel Yöntemler

Ad Tanım
İptal Bu görev grubunda kök kök kökünü oluşturan çalışma alt ağacını iptal etmek için en iyi çabayı gösterir. Görev grubunda zamanlanan her görev mümkünse geçişli olarak iptal edilir.
is_canceling Görev grubunun şu anda bir iptal işleminin ortasında olup olmadığını çağıranı bilgilendirir. Bu, yönteminin cancel nesne üzerinde structured_task_group çağrıldığını belirtmez (ancak bu yöntem kesinlikle döndürülecek trueşekilde niteler). Nesne satır structured_task_group içinde yürütülüyor olabilir ve iş ağacının daha yukarısında bir görev grubu iptal edildi. Çalışma zamanının önceden iptalin bu structured_task_group nesneden akacağını belirleyebildiği durumlar gibi durumlarda da true döndürülür.
Çalıştırın Aşırı yüklendi. Nesne üzerinde structured_task_group bir görev zamanlar. Çağıran, parametresinde _Task_handle geçirilen nesnenin task_handle ömrünü yönetir. parametresini alan sürüm, görevin bu parametre _Placement tarafından belirtilen konumda yürütülmeye karşı sapmasına neden olur.
run_and_wait Aşırı yüklendi. Tam iptal desteği için nesnesinin yardımıyla structured_task_group arama bağlamında satır içinde çalıştırılacak bir görev zamanlar. Nesnesi task_handle parametresi run_and_waitolarak geçirilirse, çağıran nesnenin task_handle yaşam ömrünü yönetmekle sorumludur. İşlev daha sonra nesnedeki tüm çalışmalar tamamlanana veya iptal edilene structured_task_group kadar bekler.
Bekle üzerindeki tüm çalışmalar tamamlanana veya iptal edilene structured_task_group kadar bekler.

Açıklamalar

Performans kazanmak için bir nesnenin kullanımına uygulanan bir structured_task_group dizi ciddi kısıtlama vardır:

  • Tek structured_task_group bir nesne birden çok iş parçacığı tarafından kullanılamaz. Bir structured_task_group nesnedeki tüm işlemler, nesneyi oluşturan iş parçacığı tarafından gerçekleştirilmelidir. Bu kuralın iki özel durumu, ve üye işlevleridir cancelis_canceling. Nesne, lambda ifadesinin yakalama listesinde yer almayabilir ve görev iptal işlemlerinden birini kullanmadığı sürece bir görev içinde kullanılabilir.

  • Bir structured_task_group nesneye zamanlanan tüm görevler, kullanım ömrünü açıkça yönetmeniz gereken nesnelerin kullanımıyla task_handle zamanlanır.

  • Birden çok grup yalnızca tamamen iç içe yerleştirilmiş sırada kullanılabilir. İki structured_task_group nesne bildirilirse, bildirilen ikinci nesne (iç olan), ilkinde (dışta) dışında cancel veya is_canceling çağrılan herhangi bir yöntemden önce yok edilmelidir. Bu koşul, hem aynı veya işlevsel olarak iç içe yerleştirilmiş kapsamlar içinde birden çok structured_task_group nesnenin bildirilmesi hem de veya run_and_wait yöntemleri aracılığıyla run kuyruğa alınmış structured_task_group bir görevin durumu için geçerlidir.

  • Genel task_group sınıftan farklı olarak, sınıftaki structured_task_group tüm durumlar sondur. Görevleri gruba kuyruğa aldıktan ve tamamlanmasını bekledikten sonra, aynı grubu yeniden kullanamazsınız.

Daha fazla bilgi için bkz . Görev Paralelliği.

Devralma Hiyerarşisi

structured_task_group

Gereksinimler

Üst bilgi: ppl.h

Ad alanı: eşzamanlılık

İptal

Bu görev grubunda kök kök kökünü oluşturan çalışma alt ağacını iptal etmek için en iyi çabayı gösterir. Görev grubunda zamanlanan her görev mümkünse geçişli olarak iptal edilir.

void cancel();

Açıklamalar

Daha fazla bilgi için bkz . İptal.

is_canceling

Görev grubunun şu anda bir iptal işleminin ortasında olup olmadığını çağıranı bilgilendirir. Bu, yönteminin cancel nesne üzerinde structured_task_group çağrıldığını belirtmez (ancak bu yöntem kesinlikle döndürülecek trueşekilde niteler). Nesne satır structured_task_group içinde yürütülüyor olabilir ve iş ağacının daha yukarısında bir görev grubu iptal edildi. Çalışma zamanının önceden iptalin bu structured_task_group nesneden akacağını belirleyebildiği durumlar gibi durumlarda da true döndürülür.

bool is_canceling();

İade Değeri

Nesnenin structured_task_group bir iptal işleminin ortasında olup olmadığını gösteren bir gösterge (veya kısa süre içinde garanti edilir).

Açıklamalar

Daha fazla bilgi için bkz . İptal.

Çalıştırın

Nesne üzerinde structured_task_group bir görev zamanlar. Çağıran, parametresinde _Task_handle geçirilen nesnenin task_handle ömrünü yönetir. parametresini alan sürüm, görevin bu parametre _Placement tarafından belirtilen konumda yürütülmeye karşı sapmasına neden olur.

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

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

Parametreler

_Işlev
Görev tutamacının gövdesini yürütmek için çağrılacak işlev nesnesinin türü.

_Task_handle
Zamanlanan işin tanıtıcısı. Çağıranın bu nesnenin ömründen sorumlu olduğunu unutmayın. Çalışma zamanı, bu structured_task_group nesnede veya run_and_wait yöntemi çağrılana kadar bu çalışma zamanının yaşamasını wait beklemeye devam edecektir.

_Yerleşim
Parametresi tarafından temsil edilen görevin yürütülmesi gereken konuma başvuru _Task_handle .

Açıklamalar

Çalışma zamanı, bu yönteme geçirdiğiniz iş işlevinin bir kopyasını oluşturur. Bu yönteme geçirdiğiniz bir işlev nesnesinde gerçekleşen durum değişiklikleri, bu işlev nesnesinin kopyanızda görünmez.

Bir özel durumdan structured_task_group yığın geri sarmanın sonucu olarak yok olursa, veya run_and_wait yöntemine wait bir çağrı yapıldığını garanti etmeniz gerekmez. Bu durumda, yıkıcı uygun şekilde iptal eder ve parametresi tarafından _Task_handle temsil edilen görevin tamamlanmasını bekler.

parametresi tarafından _Task_handle verilen görev tanıtıcısı yöntemi aracılığıyla run bir görev grubu nesnesine zaten zamanlanmışsa ve bu görev grubundaki veya run_and_wait yöntemine wait yönelik bir araya gelen çağrı yapılmadıysa invalid_multiple_scheduling bir özel durum oluşturur.

run_and_wait

Tam iptal desteği için nesnesinin yardımıyla structured_task_group arama bağlamında satır içinde çalıştırılacak bir görev zamanlar. Nesnesi task_handle parametresi run_and_waitolarak geçirilirse, çağıran nesnenin task_handle yaşam ömrünü yönetmekle sorumludur. İşlev daha sonra nesnedeki tüm çalışmalar tamamlanana veya iptal edilene structured_task_group kadar bekler.

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);

Parametreler

_Işlev
Görevi yürütmek için çağrılacak işlev nesnesinin türü.

_Task_handle
Arama bağlamında satır içinde çalıştırılacak görevin tanıtıcısı. Çağıranın bu nesnenin ömründen sorumlu olduğunu unutmayın. Çalışma zamanı, yöntem yürütmeyi bitirene kadar bu çalışma zamanının yaşamasını beklemeye run_and_wait devam edecektir.

_Func
İşin gövdesini çağırmak için çağrılacak bir işlev. Bu, imzalı void operator()()işlev çağrısı işlecinin bir sürümünü destekleyen bir lambda veya başka bir nesne olabilir.

İade Değeri

Açık bir iptal işlemi veya görevlerinden birinden özel durum oluştuğundan beklemenin karşılanıp karşılanmadığının veya görev grubunun iptal edildiğinin göstergesi. Daha fazla bilgi için bkz. task_group_status

Açıklamalar

Bu structured_task_group nesneye zamanlanan görevlerden birinin veya daha fazlasının arama bağlamında satır içi olarak yürütülebileceğini unutmayın.

Bu structured_task_group nesneye zamanlanan görevlerden biri veya daha fazlası bir özel durum oluşturursa, çalışma zamanı böyle bir özel durum seçer ve bunu yöntemine run_and_wait yapılan çağrının dışına yayacaktır.

Bu işlev döndürüldüğünde, structured_task_group nesne son durumda kabul edilir ve kullanılmamalıdır. Yöntem döndürdüğünde kullanımın run_and_wait tanımsız davranışa neden olacağını unutmayın.

Yürütmenin istisnai olmayan yolunda, yürütmeleri yok ediciden structured_task_group önce bu yöntemi veya wait yöntemini çağırmanız gerekir.

Structured_task_group

Yeni structured_task_group bir nesne oluşturur.

structured_task_group();

structured_task_group(cancellation_token _CancellationToken);

Parametreler

_Cancellationtoken
Bu yapılandırılmış görev grubuyla ilişkilendirilecek bir iptal belirteci. Belirteç iptal edildiğinde yapılandırılmış görev grubu iptal edilir.

Açıklamalar

İptal belirteci alan oluşturucu, belirteçle ilişkili kaynak iptal edildiğinde iptal edilecek bir structured_task_group oluşturur. Açık bir iptal belirteci sağlamak, bu yapılandırılmış görev grubunu, farklı bir belirteç içeren veya belirteci olmayan bir üst gruptan örtük bir iptale katılmasını da yalıtır.

~Structured_task_group

Bir structured_task_group nesneyi yok eder. Bir özel durum nedeniyle yığın geri sarmalamanın bir sonucu olarak yıkıcı yürütülmediği sürece, yok edici yürütülmeden önce nesne üzerinde veya run_and_wait yöntemini çağırmanız wait beklenir.

~structured_task_group();

Açıklamalar

Yıkıcı normal yürütmenin sonucu olarak çalışıyorsa (örneğin, bir özel durum nedeniyle yığın geri sarma değil) ve ne de waitrun_and_wait yöntemleri çağrıldıysa, yıkıcı missing_wait bir özel durum oluşturabilir.

wait

üzerindeki tüm çalışmalar tamamlanana veya iptal edilene structured_task_group kadar bekler.

task_group_status wait();

İade Değeri

Açık bir iptal işlemi veya görevlerinden birinden özel durum oluştuğundan beklemenin karşılanıp karşılanmadığının veya görev grubunun iptal edildiğinin göstergesi. Daha fazla bilgi için bkz. task_group_status

Açıklamalar

Bu structured_task_group nesneye zamanlanan görevlerden birinin veya daha fazlasının arama bağlamında satır içi olarak yürütülebileceğini unutmayın.

Bu structured_task_group nesneye zamanlanan görevlerden biri veya daha fazlası bir özel durum oluşturursa, çalışma zamanı böyle bir özel durum seçer ve bunu yöntemine wait yapılan çağrının dışına yayacaktır.

Bu işlev döndürüldüğünde, structured_task_group nesne son durumda kabul edilir ve kullanılmamalıdır. Yöntem döndürdüğünde kullanımın wait tanımsız davranışa neden olacağını unutmayın.

Yürütmenin istisnai olmayan yolunda, yürütmeleri yok ediciden structured_task_group önce bu yöntemi veya run_and_wait yöntemini çağırmanız gerekir.

Ayrıca bkz.

Eşzamanlılık Ad Alanı
task_group Sınıfı
task_handle Sınıfı