Aracılığıyla paylaş


packaged_task Sınıfı

Çağrı imzası Ty(ArgTypes...)olan bir çağrı sarmalayıcısı olan zaman uyumsuz sağlayıcıyı açıklar. İlişkili zaman uyumsuz durumu , olası sonucun yanı sıra çağrılabilen nesnesinin bir kopyasını tutar.

Sözdizimi

template <class>
class packaged_task;

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
packaged_task Bir packaged_task nesne oluşturur.
packaged_task::~packaged_task Yıkıcı Bir packaged_task nesneyi yok eder.

Genel Yöntemler

Veri Akışı Adı Açıklama
get_future Gelecekteki aynı ilişkili zaman uyumsuz duruma sahip bir nesne döndürür.
make_ready_at_thread_exit İlişkili zaman uyumsuz durumda depolanan çağrılabilir nesneyi çağırır ve döndürülen değeri atomik olarak depolar.
sıfırlama İlişkili zaman uyumsuz durumu değiştirir.
değiş tokuş etmek İlişkili zaman uyumsuz durumu belirtilen bir nesneyle değiştirir.
geçerli Nesnenin ilişkili zaman uyumsuz durumuna sahip olup olmadığını belirtir.

Ortak İşleçler

Veri Akışı Adı Açıklama
packaged_task::operator= Belirtilen nesneden ilişkili zaman uyumsuz durumu aktarır.
packaged_task::operator() İlişkili zaman uyumsuz durumda depolanan çağrılabilir nesneyi çağırır, döndürülen değeri atomik olarak depolar ve durumu hazır olarak ayarlar.
packaged_task::operator bool Nesnenin ilişkili zaman uyumsuz durumuna sahip olup olmadığını belirtir.

Gereksinimler

Üst bilgi:<gelecek>

Ad alanı: std

packaged_task::get_future

Aynı ilişkili zaman uyumsuz duruma sahip türde future<Ty> bir nesne döndürür.

future<Ty> get_future();

Açıklamalar

Nesnenin packaged_task ilişkili zaman uyumsuz durumu yoksa, bu yöntem hata koduna no_statesahip bir future_error oluşturur.

Bu yöntem, aynı ilişkili zaman uyumsuz duruma sahip bir packaged_task nesne için zaten çağrıldıysa, yöntemi hata kodu future_already_retrievedolan bir future_error oluşturur.

packaged_task::make_ready_at_thread_exit

İlişkili zaman uyumsuz durumda depolanan çağrılabilir nesneyi çağırır ve döndürülen değeri atomik olarak depolar.

void make_ready_at_thread_exit(ArgTypes... args);

Açıklamalar

Nesnenin packaged_task ilişkili zaman uyumsuz durumu yoksa, bu yöntem hata koduna no_statesahip bir future_error oluşturur.

Bu yöntem veya make_ready_at_thread_exit aynı ilişkili zaman uyumsuz duruma sahip bir packaged_task nesne için zaten çağrıldıysa, yöntemi hata koduna promise_already_satisfiedsahip bir future_error oluşturur.

Aksi takdirde, bu işleç çağrılır INVOKE(fn, args..., Ty); burada fn , ilişkili zaman uyumsuz durumda depolanan çağrılabilir nesnedir. Döndürülen herhangi bir değer, ilişkili zaman uyumsuz durumun döndürülen sonucu olarak atomik olarak depolanır.

packaged_task::operator() yerine, çağıran iş parçacığındaki tüm iş parçacığı yerel nesneleri yok edilene ready kadar ilişkili zaman uyumsuz durum olarak ayarlanmamıştır. Genellikle, ilişkili zaman uyumsuz durumda engellenen iş parçacıkları, çağrılan iş parçacığı çıkana kadar engellenmez.

packaged_task::operator=

Belirtilen nesneden ilişkili zaman uyumsuz durumu aktarır.

packaged_task& operator=(packaged_task&& Right);

Parametreler

Right
Bir packaged_task nesnesi.

Dönüş Değeri

*this

Açıklamalar

İşlemden sonra, Sağ artık ilişkili bir zaman uyumsuz duruma sahip değil.

packaged_task::operator()

İlişkili zaman uyumsuz durumda depolanan çağrılabilir nesneyi çağırır, döndürülen değeri atomik olarak depolar ve durumu hazır olarak ayarlar.

void operator()(ArgTypes... args);

Açıklamalar

Nesnenin packaged_task ilişkili zaman uyumsuz durumu yoksa, bu yöntem hata koduna no_statesahip bir future_error oluşturur.

Bu yöntem veya make_ready_at_thread_exit aynı ilişkili zaman uyumsuz duruma sahip bir packaged_task nesne için zaten çağrıldıysa, yöntemi hata koduna promise_already_satisfiedsahip bir future_error oluşturur.

Aksi takdirde, bu işleç çağrılır INVOKE(fn, args..., Ty); burada fn , ilişkili zaman uyumsuz durumda depolanan çağrılabilir nesnedir. Döndürülen tüm değerler, ilişkili zaman uyumsuz durumun döndürülen sonucu olarak atomik olarak depolanır ve durum hazır olarak ayarlanır. Sonuç olarak, ilişkili zaman uyumsuz durumda engellenen tüm iş parçacıklarının engeli kaldırılır.

packaged_task::operator bool

Nesnenin bir associated asynchronous stateöğesinin olup olmadığını belirtir.

operator bool() const noexcept;

Dönüş Değeri

true nesnenin ilişkili bir zaman uyumsuz durumu varsa; aksi takdirde , false.

packaged_task::p ackaged_task Oluşturucu

Bir packaged_task nesne oluşturur.

packaged_task() noexcept;
packaged_task(packaged_task&& Right) noexcept;
template <class Fn>
   explicit packaged_task(Fn&& fn);

template <class Fn, class Alloc>
   explicit packaged_task(
      allocator_arg_t, const Alloc& alloc, Fn&& fn);

Parametreler

Right
Bir packaged_task nesnesi.

alloc
Bellek ayırıcı. Daha fazla bilgi için bkz <. ayırıcılar>.

Fn
Bir işlev nesnesi.

Açıklamalar

İlk oluşturucu, ilişkili zaman uyumsuz durumuna sahip olmayan bir packaged_task nesne oluşturur.

İkinci oluşturucu bir packaged_task nesne oluşturur ve ilişkili zaman uyumsuz durumu Sağdan aktarır. İşlemden sonra, Sağ artık ilişkili bir zaman uyumsuz duruma sahip değil.

Üçüncü oluşturucu, ilişkili zaman uyumsuz durumunda depolanan bir fn kopyasına sahip bir nesne oluştururpackaged_task.

Dördüncü oluşturucu, ilişkili zaman uyumsuz durumunda depolanan bir fn kopyasına sahip olan ve bellek ayırma için kullanan alloc bir nesne oluştururpackaged_task.

packaged_task::~packaged_task Yıkıcı

Bir packaged_task nesneyi yok eder.

~packaged_task();

Açıklamalar

İlişkili zaman uyumsuz durum hazır değilse, yıkıcı, ilişkili zaman uyumsuz durumda hata kodu broken_promise içeren bir future_error özel durumu depolar ve ilişkili zaman uyumsuz durumda engellenen tüm iş parçacıkları engellenir.

packaged_task::reset

Mevcut ilişkili zaman uyumsuz durumu değiştirmek için yeni bir ilişkili zaman uyumsuz durum kullanır.

void reset();

Açıklamalar

Aslında, bu yöntem yürütür *this = packaged_task(move(fn)). Burada fn , bu nesne için ilişkili zaman uyumsuz durumda depolanan işlev nesnesidir. Bu nedenle, nesnenin durumu temizlenir ve get_future, işleç() ve make_ready_at_thread_exit yeni oluşturulduğunda olduğu gibi çağrılabilir.

packaged_task::swap

İlişkili zaman uyumsuz durumu belirtilen bir nesneyle değiştirir.

void swap(packaged_task& Right) noexcept;

Parametreler

Right
Bir packaged_task nesnesi.

packaged_task::valid

Nesnenin bir associated asynchronous stateöğesinin olup olmadığını belirtir.

bool valid() const;

Dönüş Değeri

true nesnenin ilişkili bir zaman uyumsuz durumu varsa; aksi takdirde , false.

Ayrıca bkz.

Üst Bilgi Dosyaları Başvurusu
<gelecek>