Bagikan melalui


<future>

Sertakan header <standar di masa mendatang> untuk menentukan templat kelas dan templat pendukung yang menyederhanakan menjalankan fungsi—mungkin dalam utas terpisah—dan mengambil hasilnya. Hasilnya adalah nilai yang dikembalikan oleh fungsi atau pengecualian yang dipancarkan oleh fungsi tetapi tidak tertangkap dalam fungsi.

Header ini menggunakan Concurrency Runtime (ConcRT) sehingga Anda dapat menggunakannya bersama dengan mekanisme ConcRT lainnya. Untuk informasi selengkapnya tentang ConcRT, lihat Concurrency Runtime.

Sintaks

#include <future>

Keterangan

Catatan

Dalam kode yang dikompilasi dengan menggunakan /clr, header ini diblokir.

Penyedia asinkron menyimpan hasil panggilan fungsi. Objek pengembalian asinkron digunakan untuk mengambil hasil panggilan fungsi. Status asinkron terkait menyediakan komunikasi antara penyedia asinkron dan satu atau beberapa objek pengembalian asinkron.

Program tidak secara langsung membuat objek status asinkron terkait. Program ini membuat penyedia asinkron setiap kali membutuhkannya dan dari itu membuat objek pengembalian asinkron yang berbagi status asinkron terkait dengan penyedia. Penyedia asinkron dan objek pengembalian asinkron mengelola objek yang menyimpan status asinkron terkait bersama mereka. Ketika objek terakhir yang mereferensikan status asinkron terkait melepaskannya, objek yang menyimpan status asinkron terkait dihancurkan.

Penyedia asinkron atau objek pengembalian asinkron yang tidak memiliki status asinkron terkait kosong.

Status asinkron terkait hanya siap jika penyedia asinkronnya telah menyimpan nilai pengembalian atau menyimpan pengecualian.

Fungsi async templat dan templat promise kelas dan packaged_task merupakan penyedia asinkron. Templat future kelas dan shared_future menjelaskan objek pengembalian asinkron.

Masing-masing templat kelas , future, dan shared_future memiliki spesialisasi untuk jenis void dan spesialisasi parsial promiseuntuk menyimpan dan mengambil nilai berdasarkan referensi. Spesialisasi ini berbeda dari templat utama hanya dalam tanda tangan dan semantik fungsi yang menyimpan dan mengambil nilai yang dikembalikan.

Templat future kelas dan shared_future tidak pernah memblokir di destruktor mereka, kecuali dalam satu kasus yang dipertahankan untuk kompatibilitas mundur: Tidak seperti semua masa depan lainnya, untuk — futureatau yang terakhir shared_future—yang dilampirkan ke tugas yang dimulai dengan std::async, destruktor memblokir jika tugas belum selesai; artinya, itu memblokir jika utas ini belum memanggil .get() atau .wait() dan tugas masih berjalan. Catatan kegunaan berikut telah ditambahkan ke deskripsi std::async dalam standar draf: "[Catatan: Jika masa depan yang diperoleh dari std::async dipindahkan ke luar cakupan lokal, kode lain yang menggunakan masa depan harus menyadari bahwa destruktor masa depan dapat memblokir status bersama menjadi siap.—catatan akhir]" Dalam semua kasus lain, future dan shared_future destruktor diperlukan dan dijamin tidak pernah memblokir.

Anggota

Kelas

Nama Deskripsi
Kelas yang akan datang Menjelaskan objek pengembalian asinkron.
Kelas future_error Menjelaskan objek pengecualian yang dapat dilemparkan oleh metode jenis yang mengelola future objek.
Kelas packaged_task Menjelaskan penyedia asinkron yang merupakan pembungkus panggilan dan yang tanda tangan panggilannya adalah Ty(ArgTypes...). Status asinkron terkait menyimpan salinan objek yang dapat dipanggil selain hasil potensial.
kelas promise Menjelaskan penyedia asinkron.
Kelas shared_future Menjelaskan objek pengembalian asinkron. Berbeda dengan future objek, penyedia asinkron dapat dikaitkan dengan sejumlah shared_future objek.

Struktur

Nama Deskripsi
Struktur is_error_code_enum Spesialisasi yang menunjukkan bahwa future_errc cocok untuk menyimpan error_code.
Struktur uses_allocator Spesialisasi yang selalu berlaku.

Fungsi

Nama Deskripsi
async Mewakili penyedia asinkron.
future_category Mengembalikan referensi ke error_category objek yang mencirikan kesalahan yang terkait dengan future objek.
make_error_code Membuat yang error_code memiliki error_category objek yang mencirikan future kesalahan.
make_error_condition Membuat yang error_condition memiliki error_category objek yang mencirikan future kesalahan.
tukar Menukar status asinkron terkait dari satu promise objek dengan objek lainnya.

Enumerasi

Nama Deskripsi
future_errc Menyediakan nama simbolis untuk kesalahan yang dilaporkan oleh future_error kelas .
future_status Memasok nama simbolis karena alasan fungsi tunggu berwak waktu dapat kembali.
luncur Mewakili jenis bitmask yang menjelaskan kemungkinan mode untuk fungsi asynctemplat .

Lihat juga

Referensi File Header