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.
Paralel Desen kitaplığı (PPL) task sınıfı. Nesne, Eşzamanlılık Çalışma Zamanı'nda paralel algoritmalar tarafından üretilen diğer görevler ve paralel çalışmalar ile eş zamansız ve eşzamanlı olarak yürütülebilen çalışmayı temsil eder. Başarıyla tamamlandığında türünden _ResultType bir sonuç üretir. Tür task<void> görevleri sonuç üretmez. Bir görev diğer görevlerden bağımsız olarak beklenebilir ve iptal edilebilir. Ayrıca continuations(then), join(when_all) ve choice(when_any) desenleri kullanılarak diğer görevlerle de oluşturulabilir. Bir görev nesnesi yeni bir değişkene atandığında, davranışı şudur std::shared_ptr: ; başka bir deyişle, her iki nesne de aynı temel görevi temsil eder.
Sözdizimi
template <>
class task<void>;
template<typename _ResultType>
class task;
Parametreler
_SonuçTipi
Görevin ürettiği sonucun türü.
Üyeler
Genel Tür Tanımları
| Veri Akışı Adı | Açıklama |
|---|---|
result_type |
Bu sınıfın bir nesnesinin ürettiği sonucun türü. |
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
| görev | Aşırı yüklü Bir task nesne oluşturur. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| Get | Aşırı yüklü Bu görevin ürettiği sonucu döndürür. Görev terminal durumunda değilse, get çağrı görevin tamamlanmasını bekler. Bu yöntem, bir görevde result_type ile void çağrıldığında değer döndürmez. |
| is_apartment_aware | Görevin bir Windows Çalışma Süresi IAsyncInfo arabirimini çözümleyip çözümlemediğini veya böyle bir görevden türeyip türemediğini belirler. |
| tamamlandi | Görevin tamamlandığını belirler. |
| Zamanlayıcı | Bu görevin zamanlayıcısını döndürür |
| sonra | Aşırı yüklü Bu göreve bir devamlılık görevi ekler. |
| beklemek | Bu görevin bir terminal durumuna ulaşmasını bekler. Görevdeki tüm bağımlılıklar karşılanmışsa ve arka plan çalışanı tarafından henüz alınmadıysa, wait görevi doğrudan yürütmek mümkündür. |
Ortak İşleçler
| Veri Akışı Adı | Açıklama |
|---|---|
| operatör!= | Aşırı yüklü İki task nesnenin farklı iç görevleri temsil edip etmediğini belirler. |
| operator= | Aşırı yüklü Bir nesnenin içeriğini başka bir task nesneyle değiştirir. |
| operator== | Aşırı yüklü İki task nesnenin aynı iç görevi temsil edip etmediğini belirler. |
Açıklamalar
Daha fazla bilgi için bkz . Görev Paralelliği.
Devralma Hiyerarşisi
task
Gereksinimler
Üst bilgi: ppltasks.h
Ad alanı: eşzamanlılık
almak / edinmek / bulmak
Bu görevin ürettiği sonucu döndürür. Görev terminal durumunda değilse, get çağrı görevin tamamlanmasını bekler. Bu yöntem, bir görevde result_type ile void çağrıldığında değer döndürmez.
_ResultType get() const;
void get() const;
Dönüş Değeri
Görevin sonucu.
Açıklamalar
Görev iptal edilirse, get çağrısı bir task_canceled özel durumu fırlatır. Görev farklı bir özel durumla karşılaştıysa veya bir özel durum ona bir öncül görevden yayıldıysa, get çağrısı bu özel durumu fırlatır.
Önemli
Evrensel Windows Platformu (UWP) uygulamasında, kullanıcı arabirimi iş parçacığında çalışan kodda eşzamanlılık::task::wait veya get (wait çağrıları get) çağırmayın. Aksi takdirde, bu yöntemler geçerli iş parçacığını engellediğinden ve uygulamanın yanıt vermemesine neden olabileceğinden çalışma zamanı concurrency::invalid_operation fırlatır. Ancak, önceki görevin sonucunu görev tabanlı bir devamında almak için get yöntemini çağırabilirsiniz çünkü sonuç hemen kullanılabilir.
is_apartment_aware
Görevin bir Windows Çalışma Süresi IAsyncInfo arabirimini çözümleyip çözümlemediğini veya böyle bir görevden türeyip türemediğini belirler.
bool is_apartment_aware() const;
Dönüş Değeri
true görev bir IAsyncInfo arabirimini çıkartırsa veya böyle bir görevden türemişse, false aksi takdirde.
task::is_done Yöntemi (Eşzamanlılık Çalışma Zamanı)
Görevin tamamlandığını belirler.
bool is_done() const;
Dönüş Değeri
Görev tamamlandıysa true, aksi takdirde false.
Açıklamalar
İşlev, görev tamamlandığında veya iptal edildiğinde, kullanıcı özel durumu olsun ya da olmasın, "true" değerini döndürür.
işleç!=
İki task nesnenin farklı iç görevleri temsil edip etmediğini belirler.
bool operator!= (const task<_ResultType>& _Rhs) const;
bool operator!= (const task<void>& _Rhs) const;
Parametreler
_Rhs
Karşılaştırma görevi.
Dönüş Değeri
true nesneler farklı temel görevlere başvuruyorsa, false aksi durumda.
operator=
Bir nesnenin içeriğini başka bir task nesneyle değiştirir.
task& operator= (const task& _Other);
task& operator= (task&& _Other);
Parametreler
_Diğer
Kaynak task nesne.
Dönüş Değeri
Açıklamalar
Akıllı task bir işaretçi gibi davrandığı için, kopyalama atamasının ardından bu task nesnesi, _Other ile aynı görevi temsil eder.
operator==
İki task nesnenin aynı iç görevi temsil edip etmediğini belirler.
bool operator== (const task<_ResultType>& _Rhs) const;
bool operator== (const task<void>& _Rhs) const;
Parametreler
_Rhs
Karşılaştırma görevi.
Dönüş Değeri
true nesneler aynı temel görevi referans alıyorsa ve false aksi takdirde.
task::scheduler Yöntemi (Eşzamanlılık Çalışma Zamanı)
Bu görevin zamanlayıcısını döndürür
scheduler_ptr scheduler() const;
Dönüş Değeri
Zamanlayıcı işaretçisi
görev
Bir task nesne oluşturur.
task();
template<typename T>
__declspec(
noinline) explicit task(T _Param);
template<typename T>
__declspec(
noinline) explicit task(T _Param, const task_options& _TaskOptions);
task(
const task& _Other);
task(
task&& _Other);
Parametreler
T
Görevin oluşturulacağı parametrenin türü.
_Param
Görevin oluşturulacağı parametre. Windows Çalışma Zamanı uygulamanızda görevler kullanıyorsanız bu lambda, işlev nesnesi, task_completion_event<result_type> nesne veya Windows::Foundation::IAsyncInfo olabilir. Lambda veya işlev nesnesi std::function<X(void)> ile eşdeğer bir tür olmalıdır; burada X, result_type veya task<result_type> türünde bir değişken ya da Windows Çalışma Zamanı uygulamalarında Windows::Foundation::IAsyncInfo olabilir.
_TaskOptions
Görev seçenekleri arasında iptal belirteci, zamanlayıcı vb. bulunur
_Diğer
Kaynak task nesne.
Açıklamalar
task için varsayılan yapıcı, yalnızca görevlerin kapsayıcıların içinde kullanılabilmesi amacıyla bulunur. Varsayılan olarak yapılan görev, siz ona geçerli bir görev atayana kadar kullanılamaz.
get, wait veya then gibi yöntemler, varsayılan olarak yapılandırılmış bir görev üzerinde çağrıldığında bir invalid_argument özel durumu fırlatır.
bir task_completion_event'dan oluşturulan görev, görev tamamlama olayı ayarlandığında tamamlanır (ve devam görevleri zamanlanır).
İptal belirtecini alan oluşturucunun sürümü, belirtecinin alındığı cancellation_token_source iptal edilebilen bir görev oluşturur. İptal belirteci olmadan oluşturulan görevler iptal edilemez.
Bir Windows::Foundation::IAsyncInfo arabiriminden veya bir arabirim döndüren IAsyncInfo lambdasından oluşturulan görevler, içerdiği Windows Çalışma Zamanı zaman uyumsuz işlem veya eylem tamamlandığında son durumlarına ulaşır. Benzer şekilde, task<result_type> döndüren bir lambda'dan oluşturulan görevler, lambda döndüğünde değil, sadece iç kısım görev terminal durumuna ulaştığında terminal durumuna ulaşır.
task akıllı bir işaretçi gibi davranır ve değer olarak aktarılması güvenlidir. Kilitlere gerek kalmadan birden çok iş parçacığı tarafından erişilebilir.
Windows::Foundation::IAsyncInfo arabirimini veya böyle bir arabirim döndüren lambda ifadesini alan oluşturucu aşım yüklemeleri yalnızca Windows Çalışma Zamanı uygulamaları için kullanılabilir.
Daha fazla bilgi için bkz . Görev Paralelliği.
sonra
Bu göreve bir devamlılık görevi ekler.
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func) const -> typename details::_ContinuationTypeTraits<_Function,
_ResultType>::_TaskOfType;
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func,
const task_options& _TaskOptions) const -> typename details::_ContinuationTypeTraits<_Function,
_ResultType>::_TaskOfType;
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func,
cancellation_token _CancellationToken,
task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
_ResultType>::_TaskOfType;
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func,
const task_options& _TaskOptions = task_options()) const -> typename details::_ContinuationTypeTraits<_Function,
void>::_TaskOfType;
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func,
cancellation_token _CancellationToken,
task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
void>::_TaskOfType;
Parametreler
_Fonksiyon
Bu görev tarafından çağrılacak işlev nesnesinin türü.
_Func
Bu görev tamamlandığında yürütülecek olan devam işlevi. Bu devamlılık işlevi, bu görevin ürettiği sonucun result_type türü olan task<result_type> veya result_typedeğişkenini giriş olarak almalıdır.
_TaskOptions
Görev seçenekleri iptal belirteci, zamanlayıcı ve devamlılık bağlamını içerir. Varsayılan olarak, eski 3 seçenek öncül görevden devralınır
_CancellationToken
Devamlılık göreviyle ilişkilendirilecek iptal belirteci. İptal belirteci olmadan oluşturulan bir devamlılık görevi, öncül görevinin belirtecini devralır.
_ContinuationContext
Devamlılık işleminin yürütüleceği yeri belirten bir değişken. Bu değişken yalnızca UWP uygulamasında kullanıldığında kullanışlıdır. Daha fazla bilgi için bkz. task_continuation_context
Dönüş Değeri
Yeni oluşturulan ardıl görev. Görevin döndürülen sonuç türü, ne _Func tarafından döndürülüyorsa ona göre belirlenir.
Açıklamalar
then'ün, Windows::Foundation::IAsyncInfo arabirimi döndüren bir lambda veya functor alan aşırı yüklemeleri yalnızca Windows Çalışma Zamanı uygulamaları için kullanılabilir.
Zaman uyumsuz çalışma oluşturmak için görev devamlılıklarını kullanma hakkında daha fazla bilgi için bkz . Görev Paralelliği.
bekle
Bu görevin bir terminal durumuna ulaşmasını bekler. Görevdeki tüm bağımlılıklar karşılanmışsa ve arka plan çalışanı tarafından henüz alınmadıysa, wait görevi doğrudan yürütmek mümkündür.
task_status wait() const;
Dönüş Değeri
task_status veya completedolabilen canceled bir değer. Görev yürütme sırasında bir özel durumla karşılaştıysa veya bir özel durum ona bir öncül görevden yayıldıysa, wait bu özel durum oluşturulur.
Açıklamalar
Önemli
Evrensel Windows Platformu (UWP) uygulamasında, kullanıcı arabirimi iş parçacığında wait'ı çağırmayın. Aksi takdirde, çalışma zamanı concurrency::invalid_operation hatası fırlatır çünkü bu yöntem mevcut iş parçacığını engeller ve uygulamanın yanıt vermemeye başlamasına neden olabilir. Ancak, öncül görevin sonucunu görev tabanlı bir devamlılıkta almak için eşzamanlılık::task::get yöntemini çağırabilirsiniz.