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
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_wait olarak 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_group
bir nesne birden çok iş parçacığı tarafından kullanılamaz. Birstructured_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şlevleridircancel
is_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ıylatask_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ışındacancel
veyais_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_group
nesnenin bildirilmesi hem de veyarun_and_wait
yöntemleri aracılığıylarun
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ıftakistructured_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();
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_wait
olarak 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.