Görev Sınıfı (Eşzamanlı Çalışma Zamanı)

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.

Ayrıca bkz.

Eşzamanlılık Ad Alanı