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.
Kelas Pustaka Pola Paralel (PPL). task Objek task mewakili pekerjaan yang dapat dieksekusi secara asinkron dan bersamaan dengan tugas lain serta pekerjaan paralel yang dihasilkan oleh algoritma paralel dalam Lingkungan Runtime Keberlangsungan. Ini menghasilkan hasil dengan tipe _ResultType setelah penyelesaian yang sukses. Tugas jenis task<void> tidak menghasilkan hasil. Tugas dapat ditunggu dan dibatalkan secara independen dari tugas lain. Ini juga dapat disusun bersama dengan tugas lain menggunakan pola kelanjutan(then), penggabungan(when_all), dan pilihan(when_any). Ketika objek tugas ditetapkan ke variabel baru, perilakunya adalah ; std::shared_ptrdengan kata lain, kedua objek mewakili tugas yang mendasar yang sama.
Sintaks
template <>
class task<void>;
template<typename _ResultType>
class task;
Parameter
_ResultType
Jenis hasil yang dihasilkan tugas.
Anggota
Typedef Publik
| Nama | Deskripsi |
|---|---|
result_type |
Jenis hasil yang dihasilkan objek kelas ini. |
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| tugas | Kelebihan beban. Membangun objek task. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| dapat | Kelebihan beban. Mengembalikan hasil yang dihasilkan tugas ini. Jika tugas tidak dalam status terminal, panggilan ke get akan menunggu tugas selesai. Metode ini tidak mengembalikan nilai ketika dipanggil pada tugas dengan result_type sebesar void. |
| is_apartment_aware | Menentukan apakah tugas membuka antarmuka Windows Runtime IAsyncInfo atau merupakan turunan dari tugas semacam itu. |
| is_done | Menentukan apakah tugas selesai. |
| Scheduler | Mengembalikan penjadwal untuk tugas ini |
| then | Kelebihan beban. Menambahkan tugas kelanjutan ke tugas ini. |
| Tunggu | Menunggu tugas ini mencapai keadaan akhir. Dimungkinkan untuk wait menjalankan tugas sebaris jika semua dependensi tugas terpenuhi dan belum diproses untuk dieksekusi oleh pekerja latar belakang. |
Operator Publik
| Nama | Deskripsi |
|---|---|
| operator != | Kelebihan beban. Menentukan apakah dua task objek mewakili tugas internal yang berbeda. |
| operator= | Kelebihan beban. Mengganti isi satu task objek dengan objek lainnya. |
| operator == | Kelebihan beban. Menentukan apakah dua task objek mewakili tugas internal yang sama. |
Keterangan
Untuk informasi selengkapnya, lihat Paralelisme Tugas.
Hierarki Pewarisan
task
Persyaratan
Header: ppltasks.h
Namespace: konkurensi
dapatkan
Mengembalikan hasil yang dihasilkan tugas ini. Jika tugas tidak dalam status terminal, panggilan ke get akan menunggu tugas selesai. Metode ini tidak mengembalikan nilai ketika dipanggil pada tugas dengan result_type sebesar void.
_ResultType get() const;
void get() const;
Tampilkan Nilai
Hasil tugas.
Keterangan
Jika tugas dibatalkan, panggilan ke get akan menghasilkan pengecualian bernama task_canceled. Jika tugas menemukan pengecualian yang berbeda atau pengecualian disebarluaskan ke tugas tersebut dari tugas "antecedent", panggilan untuk get akan melemparkan pengecualian tersebut.
Penting
Dalam aplikasi Universal Windows Platform (UWP), jangan panggil concurrency::task::wait atau get (wait memanggil get) dalam kode yang berjalan pada utas antarmuka pengguna. Jika tidak, runtime melemparkan konkurensi::invalid_operation karena metode ini memblokir utas saat ini dan dapat menyebabkan aplikasi menjadi tidak responsif. Namun, Anda dapat memanggil metode get untuk menerima hasil dari tugas sebelumnya dalam lanjutan berbasis tugas karena hasilnya segera tersedia.
is_apartment_aware
Menentukan apakah tugas membuka antarmuka Windows Runtime IAsyncInfo atau merupakan turunan dari tugas semacam itu.
bool is_apartment_aware() const;
Tampilkan Nilai
true jika tugas membongkar IAsyncInfo antarmuka atau diturunkan dari tugas tersebut, false jika tidak demikian.
Metode task::is_done (Concurrency Runtime)
Menentukan apakah tugas selesai.
bool is_done() const;
Tampilkan Nilai
Benar jika tugas telah selesai, salah jika belum.
Keterangan
Fungsi mengembalikan true jika tugas selesai atau dibatalkan (dengan atau tanpa pengecualian pengguna).
operator!=
Menentukan apakah dua task objek mewakili tugas internal yang berbeda.
bool operator!= (const task<_ResultType>& _Rhs) const;
bool operator!= (const task<void>& _Rhs) const;
Parameter
_Rhs
Tugas untuk membandingkan.
Tampilkan Nilai
true jika objek merujuk ke tugas dasar yang berbeda, dan false sebaliknya.
operator=
Mengganti isi satu task objek dengan objek lainnya.
task& operator= (const task& _Other);
task& operator= (task&& _Other);
Parameter
_Lain
Objek sumber task .
Tampilkan Nilai
Keterangan
Karena task berperilaku seperti penunjuk cerdas, setelah penugasan penyalinan, objek task ini mewakili tugas aktual yang sama seperti yang dilakukan oleh _Other.
operator==
Menentukan apakah dua task objek mewakili tugas internal yang sama.
bool operator== (const task<_ResultType>& _Rhs) const;
bool operator== (const task<void>& _Rhs) const;
Parameter
_Rhs
Tugas untuk membandingkan.
Tampilkan Nilai
true jika objek merujuk ke tugas dasar yang sama, sebaliknya false.
Metode task::scheduler (Concurrency Runtime)
Mengembalikan penjadwal untuk tugas ini
scheduler_ptr scheduler() const;
Tampilkan Nilai
Penunjuk ke penjadwal
tugas
Membangun objek task.
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);
Parameter
T
Jenis parameter dari mana tugas akan dibuat.
_Param
Parameter dari mana tugas akan dibangun. Ini bisa berupa lambda, objek fungsi, task_completion_event<result_type> objek, atau Windows::Foundation::IAsyncInfo jika Anda menggunakan tugas di aplikasi Windows Runtime Anda. Objek lambda atau fungsi harus berupa jenis yang setara dengan std::function<X(void)>, di mana X dapat menjadi variabel jenis result_type, task<result_type>, atau Windows::Foundation::IAsyncInfo di aplikasi Windows Runtime.
_TaskOptions
Opsi tugas mencakup token pembatalan, penjadwal, dll
_Lain
Objek sumber task .
Keterangan
Konstruktor default untuk task hanya ada untuk memungkinkan tugas digunakan dalam kontainer. Tugas default yang dibuat tidak dapat digunakan sampai Anda menetapkan tugas yang valid untuk tugas tersebut. Metode seperti get, wait atau then akan melemparkan pengecualian invalid_argument saat dipanggil pada tugas default yang dibangun.
Tugas yang dibuat dari task_completion_event akan selesai (dan jadwal kelanjutannya akan ditentukan) ketika peristiwa penyelesaian tugas ditetapkan.
Versi konstruktor yang mengambil token pembatalan membuat tugas yang dapat dibatalkan menggunakan token dari mana cancellation_token_source diperoleh. Tugas yang dibuat tanpa token pembatalan tidak dapat dibatalkan.
Tugas yang dibuat dari antarmuka Windows::Foundation::IAsyncInfo atau lambda yang mengembalikan antarmuka IAsyncInfo mencapai status terminal mereka ketika operasi atau tindakan asinkron Windows Runtime terkait selesai. Demikian pula, tugas yang dibuat dari lambda yang mengembalikan task<result_type> akan mencapai status terminalnya ketika tugas di dalamnya mencapai status terminalnya, dan bukan ketika lambda dieksekusi.
task berperilaku seperti penunjuk cerdas dan aman untuk diteruskan berdasarkan nilai. Ini dapat diakses oleh beberapa utas tanpa perlu kunci.
Konstruktor kelebihan beban yang mengambil antarmuka Windows::Foundation::IAsyncInfo atau lambda yang mengembalikan antarmuka tersebut, hanya tersedia untuk aplikasi Windows Runtime.
Untuk informasi selengkapnya, lihat Paralelisme Tugas.
kemudian
Menambahkan tugas kelanjutan ke tugas ini.
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;
Parameter
_Fungsi
Tipe objek fungsi yang akan dipanggil oleh tugas ini.
_Func
Fungsi kelanjutan untuk dijalankan ketika tugas ini selesai. Fungsi kelanjutan ini harus mengambil sebagai input variabel dari salah satu result_type atau task<result_type>, di mana result_type adalah jenis hasil yang dihasilkan tugas ini.
_TaskOptions
Opsi tugas mencakup token pembatalan, penjadwal, dan konteks kelanjutan. Secara default, 3 opsi sebelumnya diwarisi dari tugas pendahulu
_CancellationToken
Token pembatalan yang dihubungkan dengan tugas kelanjutan. Tugas kelanjutan yang dibuat tanpa token pembatalan akan mewarisi token dari tugas pendahulunya.
_ContinuationContext
Variabel yang menentukan lokasi pelaksanaan kelanjutan. Variabel ini hanya berguna saat digunakan dalam aplikasi UWP. Untuk informasi selengkapnya, lihat task_continuation_context
Tampilkan Nilai
Tugas lanjutan yang baru saja dibuat. Jenis hasil dari tugas yang dikembalikan ditentukan oleh hasil yang dikembalikan oleh _Func.
Keterangan
Kelebihan beban then yang mengambil lambda atau functor yang mengembalikan antarmuka Windows::Foundation::IAsyncInfo, hanya tersedia untuk aplikasi Windows Runtime.
Untuk informasi selengkapnya tentang cara menggunakan kelanjutan tugas untuk menyusun pekerjaan asinkron, lihat Paralelisme Tugas.
tunggu
Menunggu tugas ini mencapai keadaan akhir. Dimungkinkan untuk wait menjalankan tugas sebaris jika semua dependensi tugas terpenuhi dan belum diproses untuk dieksekusi oleh pekerja latar belakang.
task_status wait() const;
Tampilkan Nilai
Nilai task_status yang bisa berupa completed atau canceled. Jika tugas mengalami pengecualian selama eksekusi, atau pengecualian disebarluaskan ke tugas tersebut dari tugas pendahulu, wait akan melemparkan pengecualian tersebut.
Keterangan
Penting
Di aplikasi Platform Windows Universal (UWP), jangan memanggil wait dalam kode yang berjalan pada utas antarmuka pengguna. Jika tidak, runtime akan melempar concurrency::invalid_operation karena metode ini memblokir utas saat ini dan dapat menyebabkan aplikasi menjadi tidak responsif. Namun, Anda dapat memanggil metode concurrency::task::get untuk menerima hasil tugas sebelumnya dalam kelanjutan yang berbasis tugas.