task_group Sınıfı
sınıfı, task_group
beklenebilen veya iptal edilebilen paralel çalışma koleksiyonunu temsil eder.
Sözdizimi
class task_group;
Üyeler
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
task_group | Aşırı yüklendi. Yeni task_group bir nesne oluşturur. |
~task_group Yıkıcı | Bir task_group nesneyi yok eder. Bir özel durum nedeniyle yığın geri sarmalamanın sonucu olarak yıkıcı yürütülmediği sürece, yok edici yürütülürken 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 task_group çağrıldığını belirtmez (ancak bu yöntem kesinlikle döndürülecek true şekilde niteler). Nesne satır 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 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 task_group bir görev zamanlar. Nesnesi task_handle parametresi run olarak geçirilirse, çağıran nesnenin task_handle yaşam ömrünü yönetmekle sorumludur. Parametre olarak bir işlev nesnesine başvuru alan yöntemin sürümü, çalışma zamanı içinde bir nesneye başvuru yapan sürümü kullanmaktan daha az iyi performans gösterebilecek yığın ayırmayı task_handle içerir. 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 task_group arama bağlamında satır içinde çalıştırılacak bir görev zamanlar. İşlev daha sonra nesnedeki tüm çalışmalar tamamlanana veya iptal edilene task_group kadar bekler. Nesnesi task_handle parametresi run_and_wait olarak geçirilirse, çağıran nesnenin task_handle yaşam ömrünü yönetmekle sorumludur. |
beklemek | Nesnedeki tüm çalışmalar tamamlanana task_group veya iptal edilene kadar bekler. |
Açıklamalar
Yoğun kısıtlanmış structured_task_group
sınıftan task_group
farklı olarak, sınıf çok daha genel bir yapıdır. structured_task_group tarafından açıklanan hiçbir kısıtlamaya sahip değildir. task_group
nesneler iş parçacıkları arasında güvenli bir şekilde kullanılabilir ve serbest biçimli yollarla kullanılabilir. Yapısının task_group
dezavantajı, az miktarda iş gerçekleştiren görevler için yapının structured_task_group
yanı sıra gerçekleştiremeyebilir olmasıdır.
Daha fazla bilgi için bkz . Görev Paralelliği.
Devralma Hiyerarşisi
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 task_group
çağrıldığını belirtmez (ancak bu yöntem kesinlikle döndürülecek true
şekilde niteler). Nesne satır 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 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 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 task_group
bir görev zamanlar. Nesnesi task_handle
parametresi run
olarak geçirilirse, çağıran nesnenin task_handle
yaşam ömrünü yönetmekle sorumludur. Parametre olarak bir işlev nesnesine başvuru alan yöntemin sürümü, çalışma zamanı içinde bir nesneye başvuru yapan sürümü kullanmaktan daha az iyi performans gösterebilecek yığın ayırmayı task_handle
içerir. parametresini alan sürüm, görevin bu parametre _Placement
tarafından belirtilen konumda yürütülmeye karşı sapmasına neden olur.
template<
typename _Function
>
void run(
const _Function& _Func
);
template<
typename _Function
>
void run(
const _Function& _Func,
location& _Placement
);
template<
typename _Function
>
void run(
task_handle<_Function>& _Task_handle
);
template<
typename _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ü.
_Func
Görevin gövdesini çağırmak için çağrılacak bir işlev. Bu bir lambda ifadesi veya imzalı void operator()()
işlev çağrısı işlecinin bir sürümünü destekleyen başka bir nesne olabilir.
_Yerleştirme
Parametresi tarafından temsil edilen görevin yürütülmesi gereken konuma başvuru _Func
.
_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 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.
Açıklamalar
Çalışma zamanı, sağlanan iş işlevini daha sonra çalışacak şekilde zamanlar; bu, çağıran işlev döndürdüğünde olabilir. Bu yöntem, sağlanan iş işlevinin bir kopyasını tutmak için bir task_handle nesnesi kullanır. Bu nedenle, 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. Ayrıca, iş işlevi dönene kadar işaretçiyle veya iş işlevine başvuruyla geçirdiğiniz nesnelerin ömrünün geçerli kaldığından emin olun.
Bir özel durumdan 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
herhangi bir araya gelen çağrı yapılmadıysa yöntemi bir invalid_multiple_scheduling özel durumu oluşturur.
run_and_wait
Tam iptal desteği için nesnesinin yardımıyla task_group
arama bağlamında satır içinde çalıştırılacak bir görev zamanlar. İşlev daha sonra nesnedeki tüm çalışmalar tamamlanana veya iptal edilene task_group
kadar bekler. Nesnesi task_handle
parametresi run_and_wait
olarak geçirilirse, çağıran nesnenin task_handle
yaşam ömrünü yönetmekle sorumludur.
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örevin gövdesini 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 bir lambda ifadesi veya imzalı void operator()()
işlev çağrısı işlecinin bir sürümünü destekleyen 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 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 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.
Bir task_group
nesnedeki run_and_wait
yönteminden döndürüldükten sonra, çalışma zamanı nesneyi yeniden değiştirilebilir temiz bir duruma sıfırlar. Bu, nesnenin task_group
iptal edildiği durumu içerir.
Yürütmenin istisnai olmayan yolunda, yürütmeleri yok ediciden task_group
önce bu yöntemi veya wait
yöntemini çağırmanız gerekir.
task_group
Yeni task_group
bir nesne oluşturur.
task_group();
task_group(
cancellation_token _CancellationToken
);
Parametreler
_CancellationToken
Bu görev grubuyla ilişkilendirilecek bir iptal belirteci. Belirteç iptal edildiğinde görev grubu iptal edilir.
Açıklamalar
İptal belirteci alan oluşturucu, belirteçle ilişkili kaynak iptal edildiğinde iptal edilecek bir task_group
oluşturur. Açık bir iptal belirteci sağlamak, bu görev grubunun farklı bir belirteç içeren veya belirteci olmayan bir üst gruptan örtük bir iptale katılmasını da yalıtır.
~task_group
Bir task_group
nesneyi yok eder. Bir özel durum nedeniyle yığın geri sarmalamanın sonucu olarak yıkıcı yürütülmediği sürece, yok edici yürütülürken nesne üzerinde veya run_and_wait
yöntemini çağırmanız wait
beklenir.
~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
Nesnedeki tüm çalışmalar tamamlanana task_group
veya iptal edilene 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 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 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.
Bir task_group
nesne üzerinde çağrılmasıwait
, nesnenin yeniden kullanılabilmesi için temiz bir duruma sıfırlar. Bu, nesnenin task_group
iptal edildiği durumu içerir.
Yürütmenin istisnai olmayan yolunda, yürütmeleri yok ediciden 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ı
structured_task_group Sınıfı
task_handle Sınıfı