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.
task_group sınıfı, beklenebilen veya iptal edilebilen paralel işlem koleksiyonunu temsil eder.
Sözdizimi
class task_group;
Üyeler
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
| task_group | Aşırı yüklü Yeni task_group bir nesne oluşturur. |
| ~task_group Yıkıcı Fonksiyon | Bir task_group nesneyi yok eder. Yok edici, bir özel durum nedeniyle yığın çözülmesinin sonucu olarak yürütülmüyorsa, yok ediciden ö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 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 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üklü
task_group nesnesi üzerinde bir görevi zamanlamak. Parametre olarak bir task_handle nesnesi run geçirildiğinde, çağıran, task_handle nesnesinin ömrünü yönetmekten sorumludur. Bir işlev nesnesine referans alan yöntemin sürümü, çalışma zamanında task_handle nesnesine referans alan sürümün kullanılması durumunda, yığın tahsisi içerebilir ve bu da genellikle daha düşük performansa neden olabilir. 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 task_group nesnesinin yardımıyla satır içi olarak çalıştırılacak bir görev zamanlanır. İşlev ise task_group nesnedeki tüm çalışmalar tamamlanana veya iptal edilene kadar bekler. Parametre olarak bir task_handle nesnesi run_and_wait geçirildiğinde, çağıran, task_handle nesnesinin ömrünü yönetmekten sorumludur. |
| beklemek | Nesnedeki task_group tüm çalışmalar tamamlanana ya da 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 ve esnek biçimlerde kullanılabilir.
task_group yapısının dezavantajı, az miktarda iş yapan görevler için structured_task_group yapısı kadar iyi performans göstermeyebilir 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 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 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 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
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
task_group nesnesi üzerinde bir görevi zamanlamak. Parametre olarak bir task_handle nesnesi run geçirildiğinde, çağıran, task_handle nesnesinin ömrünü yönetmekten sorumludur. Bir işlev nesnesine referans alan yöntemin sürümü, çalışma zamanında task_handle nesnesine referans alan sürümün kullanılması durumunda, yığın tahsisi içerebilir ve bu da genellikle daha düşük performansa neden olabilir. 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
_Func parametresinin temsil ettiği görevin yürütülmesi gereken konuma bir referans.
_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 task_group nesnesinde ya wait ya da run_and_wait yöntemi çağrılana kadar onun kullanılabilir olmasını beklemeye devam edecektir.
Açıklamalar
Çalışma zamanı, sağlanan işlevi ileriki bir zamanda çalışması için zamanlar; bu, çağıran işlevin dönüşünden sonra 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, çalışma işlevi dönene kadar işaretçiyle veya başvuru yoluyla ilettiğiniz nesnelerin ömrünün geçerli olmasını sağladığınızdan emin olun.
Bir özel durumdan kaynaklanan yığın geri sarılması sonucu 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.
Parametre tarafından verilen görev tanıtıcısı eğer _Task_handle yöntemi aracılığıyla bir görev grubu nesnesine zaten zamanlanmışsa ve bu görev grubunda ne wait ne de run_and_wait yöntemine herhangi bir araya gelen çağrı yapılmadıysa, yöntem bir invalid_multiple_scheduling istisnası fırlatır.
çalıştır_ve_bekle
Arama bağlamında, tam iptal desteği için task_group nesnesinin yardımıyla satır içi olarak çalıştırılacak bir görev zamanlanır. İşlev ise task_group nesnedeki tüm çalışmalar tamamlanana veya iptal edilene kadar bekler. Parametre olarak bir task_handle nesnesi run_and_wait geçirildiğinde, çağıran, task_handle nesnesinin ömrünü yönetmekten 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ı, 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 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
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 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ı bir özel durum seçer ve bunu run_and_wait yöntemine yapılan çağrının dışına aktarır.
Bir run_and_wait nesnedeki task_group yönteminden döndürüldükten sonra, çalışma zamanı nesneyi temiz, yeniden kullanılabilir bir hale sıfırlar. Bu, nesnenin task_group iptal edildiği durumu içerir.
Yürütmenin istisnai olmayan yolunda, task_group yok edicisi çalıştırılmadan önce bu yöntemi veya wait yöntemini çağırmanız gerekir.
görev grubu
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. Jeton iptal edildiğinde görev grubu da iptal edilir.
Açıklamalar
İptal belirteci alan bir oluşturucu, belirteçle ilişkili kaynak iptal edildiğinde iptal edilecek olan bir nesnenin task_group'sini oluşturur. Açık bir iptal belirteci sağlamak, bu görev grubunu farklı bir belirtece sahip veya belirteçsiz bir üst gruptan gelen örtük bir iptale katılmaktan izole eder.
~görev_grubu
Bir task_group nesneyi yok eder. Yok edici, bir özel durum nedeniyle yığın çözülmesinin sonucu olarak yürütülmüyorsa, yok ediciden önce nesne üzerinde wait veya run_and_wait yöntemini çağırmanız 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ğilse) ve wait veya run_and_wait yöntemleri çağrılmadıysa, yıkıcı missing_wait özel durumunu oluşturabilir.
bekle
Nesnedeki task_group tüm çalışmalar tamamlanana ya da 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 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ı bir özel durum seçer ve bunu wait yöntemine yapılan çağrının dışına aktarır.
wait işlevinin task_group nesnesi üzerinde çağrılması, onu 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, task_group yok edicisi çalıştırılmadan ö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ı