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. structured_task_group kullanarak tek tek paralel görevleri task_handle nesnesine kuyruğa alabilir, tamamlanmalarını bekleyebilir veya yürütme tamamlanmadan önce görev grubunu iptal edebilirsiniz. Bu, henüz yürütmeye başlamamış görevleri durdurur.

Sözdizimi

class structured_task_group;

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
yapılandırılmış_görev_grubu Aşırı yüklü Yeni structured_task_group bir nesne oluşturur.
~structured_task_group Yıkıcı Bir structured_task_group nesneyi yok eder. Bir istisna nedeniyle yığının geri sarmalanmasının sonucu olarak yıkıcı yürütülmedikçe, yok edici yürütülmeden önce nesne üzerinde wait veya run_and_wait yöntemini çağırmanız beklenir.

Genel Yöntemler

Veri Akışı Adı Açıklama
İptal Bu görev grubuna ait ve köklenen iş 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.
iptal ediliyor Görev grubunun şu anda bir iptal işleminin ortasında olup olmadığını çağıranı bilgilendirir. Bu, cancel nesne üzerinde structured_task_group yöntemin çağrıldığını belirtmez (ancak bu, yöntemi kesinlikle true dönmesi için uygun kılar). 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üklü structured_task_group nesnesi üzerinde bir görevi zamanlamak. Ç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.
çalıştır ve bekle Aşırı yüklü Arama bağlamında, tam iptal desteği için structured_task_group nesnesinin yardımıyla satır içi olarak çalıştırılacak bir görev zamanlanır. Parametre olarak bir task_handle nesnesi run_and_wait geçirildiğinde, çağıran, task_handle nesnesinin ömrünü yönetmekten sorumludur. İşlev ise structured_task_group nesnedeki tüm çalışmalar tamamlanana veya iptal edilene kadar bekler.
beklemek Tüm iş structured_task_group üzerinde tamamlanana veya iptal edilene 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 istisnası cancel ve is_canceling üye işlevleridir. 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 nesne üzerinde zamanlanan tüm görevler, kullanım ömrünü açıkça yönetmeniz gereken task_handle nesneler vasıtasıyla zamanlanır.

  • Birden çok grup yalnızca tamamen iç içe yerleştirilmiş sırada kullanılabilir. İki structured_task_group nesne bildirilirse, içteki olan ikinci nesne, dıştaki nesnede cancel veya is_canceling dışında herhangi bir yöntem çağrılmadan ö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 durumu hem de structured_task_group yöntemleri veya run ile kuyruğa alınmış run_and_wait bir görev 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 tekrar 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 grubuna ait ve köklenen iş 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.

iptal ediyor

Görev grubunun şu anda bir iptal işleminin ortasında olup olmadığını çağıranı bilgilendirir. Bu, cancel nesne üzerinde structured_task_group yöntemin çağrıldığını belirtmez (ancak bu, yöntemi kesinlikle true dönmesi için uygun kılar). 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();

Dönüş Değeri

structured_task_group nesnesinin bir iptal sürecinde olup olmadığını (veya kısa süre içinde garanti edileceğini) gösteren bir gösterge.

Açıklamalar

Daha fazla bilgi için bkz . İptal.

çalıştır

structured_task_group nesnesi üzerinde bir görevi zamanlamak. Ç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

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

_Task_handle
Zamanlanmış iş için tanıtıcı. Çağıranın bu nesnenin ömründen sorumlu olduğunu unutmayın. Çalışma zamanı, bu structured_task_group nesnesinde ya wait ya da run_and_wait yöntemi çağrılana kadar onun kullanılabilir olmasını beklemeye devam edecektir.

_Yerleştirme
_Task_handle parametresinin temsil ettiği görevin yürütülmesi gereken konuma bir referans.

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 kaynaklanan yığın geri sarılması sonucu structured_task_group yok olursa, wait ya da run_and_wait yöntemine bir çağrının yapıldığını garanti etmeniz gerekmez. Destriktör bu durumda, uygun şekilde iptal eder ve _Task_handle parametresi ile temsil edilen görevin tamamlanmasını bekler.

Verilen görev tanıtıcısı parametresi ile _Task_handle yöntemi aracılığıyla bir görev grubu nesnesine zaten zamanlandıysa ve bu görev grubunda ne wait ne de run_and_wait yöntemi çağrılmadıysa, invalid_multiple_scheduling bir özel durum oluşturur.

çalıştır_ve_bekle

Arama bağlamında, tam iptal desteği için structured_task_group nesnesinin yardımıyla satır içi olarak çalıştırılacak bir görev zamanlanır. Parametre olarak bir task_handle nesnesi run_and_wait geçirildiğinde, çağıran, task_handle nesnesinin ömrünü yönetmekten sorumludur. İşlev ise structured_task_group nesnedeki tüm çalışmalar tamamlanana veya iptal edilene 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

_Fonksiyon
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ı, run_and_wait yöntemi yürütmeyi bitirene kadar onun var olmasını beklemeye 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.

Dönüş Değeri

Bir beklemenin karşılanıp karşılanmadığının veya görev grubunun, ya açık bir iptal işlemi yoluyla ya da görevlerinden birinde bir istisna fırlatıldığı için iptal edilip edilmediğ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 run_and_wait döndürdüğünde sonrası kullanımın tanımsız davranışa yol açacağını unutmayın.

Hata içermeyen yürütme yolunda, structured_task_group yok edicisi çalıştırılmadan önce bu yöntemi veya wait yöntemini çağırmanız gerekir.

yapılandırılmış görev grubu

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 bir oluşturucu, belirteçle ilişkili kaynak iptal edildiğinde iptal edilecek olan bir nesnenin structured_task_group'sini 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 istisna nedeniyle yığının geri sarmalanmasının sonucu olarak yıkıcı yürütülmedikçe, yok edici yürütülmeden önce nesne üzerinde wait veya run_and_wait yöntemini çağırmanız 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ğilse) ve wait veya run_and_wait yöntemleri çağrılmadıysa, yıkıcı missing_wait özel durumunu oluşturabilir.

bekle

Tüm iş structured_task_group üzerinde tamamlanana veya iptal edilene kadar bekler.

task_group_status wait();

Dönüş Değeri

Beklemenin tatmin edilip edilmediğinin veya görev grubunun, açık bir iptal işlemi ya da görevlerinden birinden özel durum fırlatıldığı için iptal edilip edilmediğ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ı bir özel durum seçer ve bunu wait yöntemine yapılan çağrının dışına aktarı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ükten sonra wait yönteminin kullanılması tanımsız davranışa neden olur.

Yürütmenin istisnai olmayan yolunda, structured_task_group yok edicisi çalıştırılmadan ö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ı