Aracılığıyla paylaş


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_allwhen_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 voiddeğ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 voiddeğ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_typebir 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 getyö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 canceledolabilen 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.

Ayrıca bkz.

Eşzamanlılık Ad Alanı