task Sınıfı (Eşzamanlılık Çalışma Zamanı)
Paralel Desen kitaplığı (PPL) task
sınıfı. task
Nesne, Eşzamanlılık Çalışma Zamanı'nda paralel algoritmalar tarafından üretilen diğer görevler ve paralel çalışmalarla zaman uyumsuz 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( ), ve join( then
) ve choice( when_all
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
_ResultType
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üklendi. Bir task nesne oluşturur. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
get | Aşırı yüklendi. Bu görevin ürettiği sonucu döndürür. Görev terminal durumunda değilse, çağrısı get görevin tamamlanmasını bekler. Bu yöntem, ile bir görevde çağrıldığında bir result_type void değer döndürmez. |
is_apartment_aware | Görevin bir Windows Çalışma Zamanı IAsyncInfo arabirimini açıp açmayacağını veya böyle bir görevden mi alındığını belirler. |
is_done | Görevin tamamlandığını belirler. |
Zamanlayıcı | Bu görevin zamanlayıcısını döndürür |
sonra | Aşırı yüklendi. Bu göreve bir devamlılık görevi ekler. |
beklemek | Bu görevin bir terminal durumuna ulaşmasını bekler. Tüm görev bağımlılıkları karşılandıysa ve bir arka plan çalışanı tarafından yürütülmek üzere henüz alınmadıysa, görevi satır içinde yürütmek mümkündür wait . |
Ortak İşleçler
Veri Akışı Adı | Açıklama |
---|---|
operator!= | Aşırı yüklendi. İki task nesnenin farklı iç görevleri temsil edip etmediğini belirler. |
operator= | Aşırı yüklendi. Bir nesnenin içeriğini başka bir task nesneyle değiştirir. |
operator== | Aşırı yüklendi. İ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
get
Bu görevin ürettiği sonucu döndürür. Görev terminal durumunda değilse, çağrısı get
görevin tamamlanmasını bekler. Bu yöntem, ile bir görevde çağrıldığında bir result_type
void
değer döndürmez.
_ResultType get() const;
void get() const;
Dönüş Değeri
Görevin sonucu.
Açıklamalar
Görev iptal edilirse çağrısı get
bir task_canceled özel durumu oluşturur. Görev farklı bir özel durumla karşılaştıysa veya bir özel durum ona bir öncül görevden yayıldıysa, çağrısı get
bu özel durumu oluşturur.
Ö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ı eşzamanlılık::invalid_operation oluşturur. Ancak, öncül görevin sonucunu görev tabanlı bir devamlılıkta almak için yöntemini çağırabilirsiniz get
çünkü sonuç hemen kullanılabilir.
is_apartment_aware
Görevin bir Windows Çalışma Zamanı IAsyncInfo
arabirimini açıp açmayacağını veya böyle bir görevden mi alındığını belirler.
bool is_apartment_aware() const;
Dönüş Değeri
true
görev bir IAsyncInfo
arabirimi açarsa veya böyle bir görevden geliyorsa, 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
Görev tamamlandığında veya iptal edilirse (kullanıcı özel durumuyla veya dışında) işlev true döndürür.
operator!=
İ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ıracak görev.
Dönüş Değeri
true
nesneler farklı temel alınan görevlere başvuruda bulunursa ve false
aksi takdirde.
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
nesneler, aynı fiili görevi _Other
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ıracak görev.
Dönüş Değeri
true
nesneleri aynı temel göreve başvuruda bulunursa 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 ile eşdeğer std::function<X(void)>
bir tür olmalıdır; burada X, , task<result_type>
türünde result_type
bir değişken veya 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
için varsayılan oluşturucu yalnızca görevlerin kapsayıcılar içinde kullanılmasına izin vermek için task
bulunur. Varsayılan olarak yapılan görev, siz ona geçerli bir görev atayana kadar kullanılamaz. veya gibi get
yöntemler, wait
then
varsayılan olarak oluşturulduğunda çağrıldığında bir invalid_argument özel durumu oluşturur.
'den task_completion_event
oluşturulan bir görev, görev tamamlama olayı ayarlandığında tamamlanır (ve devamlılıkları zamanlanır).
Oluşturucunun iptal belirtecini alan sürümü, belirteç alınarak iptal cancellation_token_source
edilebilen bir görev oluşturur. İptal belirteci olmadan oluşturulan görevler iptal edilemez.
Bir arabirimden veya arabirim döndüren bir IAsyncInfo
lambdadan Windows::Foundation::IAsyncInfo
oluşturulan görevler, kapalı Windows Çalışma Zamanı zaman uyumsuz işlem veya eylem tamamlandığında terminal durumlarına ulaşır. Benzer şekilde, iç görev terminal durumuna ulaştığında ve lambda döndürdüğünde değil, terminal durumuna ulaşan bir task<result_type>
lambda'dan oluşturulan görevler.
task
akıllı işaretçi gibi davranır ve değere göre geçiş yapmak güvenlidir. Kilitlere gerek kalmadan birden çok iş parçacığı tarafından erişilebilir.
Windows::Foundation::IAsyncInfo arabirimini veya böyle bir arabirimi döndüren lambdayı alan oluşturucu aşırı yüklemeleri yalnızca Windows Çalışma Zamanı uygulamalarda kullanılabilir.
Daha fazla bilgi için bkz . Görev Paralelliği.
then …
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 continuation işlevi. Bu devamlılık işlevi, bu görevin ürettiği sonucun result_type
türü olan result_type
veya task<result_type>
değ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 devamlılık görevi. Döndürülen görevin sonuç türü nelerin _Func
döndürdüğüne göre belirlenir.
Açıklamalar
Bunun aşırı yüklemelerithen
, Windows::Foundation::IAsyncInfo arabirimi döndüren bir lambda veya functor alır, yalnızca Windows Çalışma Zamanı uygulamalarda 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.
wait
Bu görevin bir terminal durumuna ulaşmasını bekler. Tüm görev bağımlılıkları karşılandıysa ve bir arka plan çalışanı tarafından yürütülmek üzere henüz alınmadıysa, görevi satır içinde yürütmek mümkündür wait
.
task_status wait() const;
Dönüş Değeri
task_status
veya canceled
olabilen completed
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 çalışan kodu çağırmayınwait
. Aksi takdirde çalışma zamanı eşzamanlılık::invalid_operation oluşturur çünkü bu yöntem geçerli 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.