Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menjelaskan penyedia asinkron yang merupakan pembungkus panggilan yang tanda tangan panggilannya adalah Ty(ArgTypes...). Status asinkron terkait menyimpan salinan objek yang dapat dipanggil selain hasil potensial.
Sintaks
template <class>
class packaged_task;
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| packaged_task | Membuat packaged_task objek. |
| packaged_task::~packaged_task Destructor | Menghancurkan objek packaged_task . |
Metode Publik
| Nama | Deskripsi |
|---|---|
| get_future | Mengembalikan objek mendatang yang memiliki status asinkron terkait yang sama. |
| make_ready_at_thread_exit | Memanggil objek yang dapat dipanggil yang disimpan dalam status asinkron terkait dan secara atomik menyimpan nilai yang dikembalikan. |
| Reset | Menggantikan status asinkron terkait. |
| tukar | Menukar status asinkron terkait dengan objek tertentu. |
| sah | Menentukan apakah objek memiliki status asinkron terkait. |
Operator Publik
| Nama | Deskripsi |
|---|---|
| packaged_task::operator= | Mentransfer status asinkron terkait dari objek tertentu. |
| packaged_task::operator() | Memanggil objek yang dapat dipanggil yang disimpan dalam status asinkron terkait, menyimpan nilai yang dikembalikan secara atomik, dan mengatur status ke siap. |
| packaged_task::operator bool | Menentukan apakah objek memiliki status asinkron terkait. |
Persyaratan
Header:<future>
Namespace: std
packaged_task::get_future
Mengembalikan objek jenis future<Ty> yang memiliki status asinkron terkait yang sama.
future<Ty> get_future();
Keterangan
packaged_task Jika objek tidak memiliki status asinkron terkait, metode ini akan melemparkan future_error yang memiliki kode no_statekesalahan .
Jika metode ini telah dipanggil untuk packaged_task objek yang memiliki status asinkron terkait yang sama, metode melemparkan future_error yang memiliki kode future_already_retrievedkesalahan .
packaged_task::make_ready_at_thread_exit
Memanggil objek yang dapat dipanggil yang disimpan dalam status asinkron terkait dan secara atomik menyimpan nilai yang dikembalikan.
void make_ready_at_thread_exit(ArgTypes... args);
Keterangan
packaged_task Jika objek tidak memiliki status asinkron terkait, metode ini akan melemparkan future_error yang memiliki kode no_statekesalahan .
Jika metode ini atau make_ready_at_thread_exit telah dipanggil untuk packaged_task objek yang memiliki status asinkron terkait yang sama, metode melemparkan future_error yang memiliki kode promise_already_satisfiedkesalahan .
Jika tidak, operator ini memanggil INVOKE(fn, args..., Ty), di mana fn adalah objek yang dapat dipanggil yang disimpan dalam status asinkron terkait. Setiap nilai yang dikembalikan disimpan secara atomik sebagai hasil yang dikembalikan dari status asinkron terkait.
Berbeda dengan packaged_task::operator(), status asinkron terkait tidak diatur ke ready sampai setelah semua objek thread-local dalam utas panggilan telah dihancurkan. Biasanya, utas yang diblokir pada status asinkron terkait tidak diblokir hingga utas panggilan keluar.
packaged_task::operator=
Mentransfer status asinkron terkait dari objek tertentu.
packaged_task& operator=(packaged_task&& Right);
Parameter
Kanan
Objek packaged_task.
Tampilkan Nilai
*this
Keterangan
Setelah operasi, Kanan tidak lagi memiliki status asinkron terkait.
packaged_task::operator()
Memanggil objek yang dapat dipanggil yang disimpan dalam status asinkron terkait, menyimpan nilai yang dikembalikan secara atomik, dan mengatur status ke siap.
void operator()(ArgTypes... args);
Keterangan
packaged_task Jika objek tidak memiliki status asinkron terkait, metode ini akan melemparkan future_error yang memiliki kode no_statekesalahan .
Jika metode ini atau make_ready_at_thread_exit telah dipanggil untuk packaged_task objek yang memiliki status asinkron terkait yang sama, metode melemparkan future_error yang memiliki kode promise_already_satisfiedkesalahan .
Jika tidak, operator ini memanggil INVOKE(fn, args..., Ty), di mana fn adalah objek yang dapat dipanggil yang disimpan dalam status asinkron terkait. Setiap nilai yang dikembalikan disimpan secara atomik sebagai hasil yang dikembalikan dari status asinkron terkait, dan status diatur ke siap. Akibatnya, setiap utas yang diblokir pada status asinkron terkait menjadi tidak diblokir.
packaged_task::operator bool
Menentukan apakah objek memiliki associated asynchronous state.
operator bool() const noexcept;
Tampilkan Nilai
true jika objek memiliki status asinkron terkait; jika tidak, false.
packaged_task::p ackaged_task Constructor
Membuat packaged_task objek.
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);
Parameter
Kanan
Objek packaged_task.
alokasi
Alokator memori. Untuk informasi selengkapnya, lihat alokator>.<
Fn
Objek fungsi.
Keterangan
Konstruktor pertama membangun packaged_task objek yang tidak memiliki status asinkron terkait.
Konstruktor kedua membangun packaged_task objek dan mentransfer status asinkron terkait dari Kanan. Setelah operasi, Kanan tidak lagi memiliki status asinkron terkait.
Konstruktor ketiga membuat packaged_task objek yang memiliki salinan fn yang disimpan dalam status asinkron terkait.
Konstruktor keempat membuat packaged_task objek yang memiliki salinan fn yang disimpan dalam status asinkron terkait, dan menggunakan alloc untuk alokasi memori.
packaged_task::~packaged_task Destructor
Menghancurkan objek packaged_task .
~packaged_task();
Keterangan
Jika status asinkron terkait belum siap, destruktor menyimpan pengecualian future_error yang memiliki kode broken_promise kesalahan sebagai akibatnya dalam status asinkron terkait, dan utas apa pun yang diblokir pada status asinkron terkait menjadi tidak diblokir.
packaged_task::reset
Menggunakan status asinkron terkait baru untuk menggantikan status asinkron terkait yang ada.
void reset();
Keterangan
Akibatnya, metode ini menjalankan *this = packaged_task(move(fn)), di mana fn adalah objek fungsi yang disimpan dalam status asinkron terkait untuk objek ini. Oleh karena itu, status objek dibersihkan, dan get_future, operator(), dan make_ready_at_thread_exit dapat dipanggil seolah-olah pada objek yang baru dibangun.
packaged_task::swap
Menukar status asinkron terkait dengan objek tertentu.
void swap(packaged_task& Right) noexcept;
Parameter
Kanan
Objek packaged_task.
packaged_task::valid
Menentukan apakah objek memiliki associated asynchronous state.
bool valid() const;
Tampilkan Nilai
true jika objek memiliki status asinkron terkait; jika tidak, false.