Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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_groupbir nesne birden çok iş parçacığı tarafından kullanılamaz. Birstructured_task_groupnesnedeki tüm işlemler, nesneyi oluşturan iş parçacığı tarafından gerçekleştirilmelidir. Bu kuralın iki istisnasıcancelveis_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_groupnesne üzerinde zamanlanan tüm görevler, kullanım ömrünü açıkça yönetmeniz gerekentask_handlenesneler vasıtasıyla zamanlanır.Birden çok grup yalnızca tamamen iç içe yerleştirilmiş sırada kullanılabilir. İki
structured_task_groupnesne bildirilirse, içteki olan ikinci nesne, dıştaki nesnedecancelveyais_cancelingdışı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 çokstructured_task_groupnesnenin bildirilmesi durumu hem destructured_task_groupyöntemleri veyarunile kuyruğa alınmışrun_and_waitbir görev için geçerlidir.Genel
task_groupsınıftan farklı olarak, sınıftakistructured_task_grouptü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.