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. 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
| Veri Akışı Adı | Açıklama |
|---|---|
| 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
| Veri Akışı Adı | Açıklama |
|---|---|
| İ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. |
| beklemek | ü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_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 özel durumu, ve üye işlevleridircancelis_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_groupnesneye zamanlanan tüm görevler, kullanım ömrünü açıkça yönetmeniz gereken nesnelerin kullanımıylatask_handlezamanlanır.Birden çok grup yalnızca tamamen iç içe yerleştirilmiş sırada kullanılabilir. İki
structured_task_groupnesne bildirilirse, bildirilen ikinci nesne (iç olan), ilkinde (dışta) dışındacancelveyais_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 çokstructured_task_groupnesnenin bildirilmesi hem de veyarun_and_waityöntemleri aracılığıylarunkuyruğa alınmışstructured_task_groupbir görevin durumu 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 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();
Dönüş 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
_Fonksiyon
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ştirme
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
_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ı, 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.
Dönüş 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 wait run_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();
Dönüş 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.