Aracılığıyla paylaş


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

Ad Tanım
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

Ad Tanım
İ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 runolarak 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_waitolarak geçirilirse, çağıran nesnenin task_handle yaşam ömrünü yönetmekle sorumludur.
Bekle 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();

İade 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 runolarak 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

_Işlev
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şim
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_waitolarak 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

_Işlev
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.

İade 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 waitrun_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();

İade 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ı