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 dijalankan secara asinkron dan bersamaan dengan tugas lain dan pekerjaan paralel yang dihasilkan oleh algoritma paralel dalam Runtime Konkurensi. Ini menghasilkan hasil dari jenis _ResultType pada penyelesaian yang berhasil. Tugas jenis task<void> tidak menghasilkan hasil. Tugas dapat ditunggu dan dibatalkan secara independen dari tugas lain. Ini juga dapat terdiri dengan tugas lain menggunakan pola continuations(then), dan join(when_all) dan choice(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. Membuat task objek. |
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 .void |
| is_apartment_aware | Menentukan apakah tugas membongkar antarmuka Windows Runtime IAsyncInfo atau turun dari tugas seperti 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 status terminal. Dimungkinkan untuk wait menjalankan tugas sebaris, jika semua dependensi tugas terpenuhi, dan belum diambil 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 Warisan
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 .void
_ResultType get() const;
void get() const;
Tampilkan Nilai
Hasil tugas.
Keterangan
Jika tugas dibatalkan, panggilan ke get akan melemparkan pengecualian 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 konkurensi::task::wait atau get (wait panggilan 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 get metode untuk menerima hasil tugas antecedent dalam kelanjutan berbasis tugas karena hasilnya segera tersedia.
is_apartment_aware
Menentukan apakah tugas membongkar antarmuka Windows Runtime IAsyncInfo atau turun dari tugas seperti itu.
bool is_apartment_aware() const;
Tampilkan Nilai
true jika tugas membongkar IAsyncInfo antarmuka atau turun dari tugas seperti itu, false jika tidak.
task::is_done Method (Concurrency Runtime)
Menentukan apakah tugas selesai.
bool is_done() const;
Tampilkan Nilai
True jika tugas telah selesai, salah jika tidak.
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 yang mendasar 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
Seperti task perilaku seperti penunjuk cerdas, setelah penugasan salinan, objek ini task mewakili tugas aktual yang sama seperti _Other yang dilakukan.
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 yang mendasar yang sama, dan false sebaliknya.
task::scheduler Method (Concurrency Runtime)
Mengembalikan penjadwal untuk tugas ini
scheduler_ptr scheduler() const;
Tampilkan Nilai
Penunjuk ke penjadwal
tugas
Membuat task objek.
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 tempat tugas akan dibangun.
_Param
Parameter tempat 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 std::function<X(void)>dengan , 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 kelanjutannya dijadwalkan) saat peristiwa penyelesaian tugas diatur.
Versi konstruktor yang mengambil token pembatalan membuat tugas yang dapat dibatalkan menggunakan cancellation_token_source token diperoleh. Tugas yang dibuat tanpa token pembatalan tidak dapat dibatalkan.
Tugas yang Windows::Foundation::IAsyncInfo dibuat dari antarmuka atau lambda yang mengembalikan IAsyncInfo antarmuka mencapai status terminal mereka ketika operasi atau tindakan asinkron Windows Runtime yang diapit selesai. Demikian pula, tugas yang dibuat dari lambda yang mengembalikan task<result_type> mencapai status terminal mereka ketika tugas dalam mencapai status terminalnya, dan bukan ketika lambda kembali.
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 antecedent
_CancellationToken
Token pembatalan untuk dikaitkan dengan tugas kelanjutan. Tugas kelanjutan yang dibuat tanpa token pembatalan akan mewarisi token tugas antecedent-nya.
_ContinuationContext
Variabel yang menentukan tempat kelanjutan harus dijalankan. Variabel ini hanya berguna saat digunakan dalam aplikasi UWP. Untuk informasi selengkapnya, lihat task_continuation_context
Tampilkan Nilai
Tugas kelanjutan yang baru dibuat. Jenis hasil tugas yang dikembalikan ditentukan oleh apa yang _Func dikembalikan.
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 status terminal. Dimungkinkan untuk wait menjalankan tugas sebaris, jika semua dependensi tugas terpenuhi, dan belum diambil 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 antecedent, wait akan melemparkan pengecualian tersebut.
Keterangan
Penting
Di aplikasi Platform Windows Universal (UWP), jangan panggil wait 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 concurrency::task::get untuk menerima hasil tugas antecedent dalam kelanjutan berbasis tugas.