<future>
Bir işlevi (büyük olasılıkla ayrı bir iş parçacığında) çalıştırmayı ve sonucunu almayı basitleştiren sınıf şablonlarını ve destekleyici şablonları tanımlamak için standart üst bilgi <geleceğini> ekleyin. Sonuç, işlev tarafından döndürülen değer veya işlev tarafından yayılan ancak işlevde yakalanmayan bir özel durumdur.
Bu üst bilgi, diğer ConcRT mekanizmalarıyla birlikte kullanabilmeniz için Eşzamanlılık Çalışma Zamanı 'nı (ConcRT) kullanır. ConcRT hakkında daha fazla bilgi için bkz . Eşzamanlılık Çalışma Zamanı.
Sözdizimi
#include <future>
Açıklamalar
Not
/clr kullanılarak derlenen kodda bu üst bilgi engellenir.
Zaman uyumsuz sağlayıcı bir işlev çağrısının sonucunu depolar. Bir işlev çağrısının sonucunu almak için zaman uyumsuz bir dönüş nesnesi kullanılır. İlişkili zaman uyumsuz durum, zaman uyumsuz bir sağlayıcı ile bir veya daha fazla zaman uyumsuz dönüş nesnesi arasında iletişim sağlar.
Program doğrudan ilişkili zaman uyumsuz durum nesneleri oluşturmaz. Program, gerektiğinde zaman uyumsuz bir sağlayıcı oluşturur ve bu sağlayıcıdan ilişkili zaman uyumsuz durumunu sağlayıcıyla paylaşan zaman uyumsuz bir dönüş nesnesi oluşturur. Zaman uyumsuz sağlayıcılar ve zaman uyumsuz dönüş nesneleri, paylaşılan ilişkili zaman uyumsuz durumlarını tutan nesneleri yönetir. İlişkili zaman uyumsuz duruma başvuran son nesne bunu serbest bıraktığında, ilişkili zaman uyumsuz durumu tutan nesne yok edilir.
İlişkili zaman uyumsuz durumuna sahip olmayan zaman uyumsuz bir sağlayıcı veya zaman uyumsuz dönüş nesnesi boş.
İlişkili zaman uyumsuz durum yalnızca zaman uyumsuz sağlayıcısı bir dönüş değeri depoladıysa veya bir özel durum depoladıysa hazır olur.
Şablon işlevi async
ve sınıf şablonları promise
ve packaged_task
zaman uyumsuz sağlayıcılardır. Sınıf şablonları future
ve shared_future
zaman uyumsuz dönüş nesnelerini açıklar.
, future
ve shared_future
sınıf şablonlarının promise
her birinin türü void
için bir uzmanlığı ve bir değeri başvuruya göre depolamak ve almak için kısmi bir özelleştirmesi vardır. Bu özelleştirmeler birincil şablondan yalnızca döndürülen değeri depolayan ve alan işlevlerin imzalarında ve semantiğinde farklılık gösterir.
Sınıf şablonları future
ve shared_future
geriye dönük uyumluluk için korunan bir durum dışında yıkıcılarını hiçbir zaman engellemez: ile başlatılan std::async
bir future
shared_future
göreve eklenmiş olan diğer tüm geleceklerden farklı olarak, yok edici görev tamamlanmadıysa engeller; başka bir deyişle, bu iş parçacığı henüz çağrılmazsa .get()
veya .wait()
görev çalışmaya devam ederse engeller. Taslak standardının açıklamasına std::async
aşağıdaki kullanılabilirlik notu eklenmiştir: "[Not: std::async'ten edinilen bir gelecek yerel kapsamın dışına taşınırsa, geleceği kullanan diğer kodlar, paylaşılan durumun hazır olması için geleceğin yıkıcısının engellenebileceğinin farkında olmalıdır.—son not]" Diğer tüm durumlarda, future
ve shared_future
yıkıcılar gereklidir ve hiçbir zaman engellemeleri garanti edilir.
Üyeler
Sınıflar
Veri Akışı Adı | Açıklama |
---|---|
future Sınıfı | Zaman uyumsuz dönüş nesnesini açıklar. |
future_error Sınıfı | Nesneleri yöneten future tür yöntemleri tarafından oluşturulabilen bir özel durum nesnesini açıklar. |
packaged_task Sınıfı | Bir çağrı sarmalayıcısı olan ve çağrı imzası Ty(ArgTypes...) olan zaman uyumsuz bir sağlayıcıyı açıklar. İlişkili zaman uyumsuz durumu, olası sonucun yanı sıra çağrılabilen nesnesinin bir kopyasını tutar. |
promise Sınıfı | Zaman uyumsuz sağlayıcıyı açıklar. |
shared_future Sınıfı | Zaman uyumsuz dönüş nesnesini açıklar. Nesnenin future aksine, zaman uyumsuz bir sağlayıcı herhangi bir sayıda shared_future nesneyle ilişkilendirilebilir. |
Yapılar
Veri Akışı Adı | Açıklama |
---|---|
is_error_code_enum Yapısı | depolamak için error_code uygun olduğunu future_errc gösteren özelleştirme. |
uses_allocator Yapısı | Her zaman doğru olan özelleştirme. |
İşlevler
Veri Akışı Adı | Açıklama |
---|---|
async | Zaman uyumsuz bir sağlayıcıyı temsil eder. |
future_category | Nesnelerle future ilişkili hataları karakterize eden nesneye bir başvuru error_category döndürür. |
make_error_code | Hataları karakterize future eden nesnesine error_category sahip bir error_code oluşturur. |
make_error_condition | Hataları karakterize future eden nesnesine error_category sahip bir error_condition oluşturur. |
değiş tokuş etmek | Bir nesnenin ilişkili zaman uyumsuz durumunu diğerininkiyle promise değiştirir. |
Listelemeler
Veri Akışı Adı | Açıklama |
---|---|
future_errc | Sınıfı tarafından future_error bildirilen hatalar için sembolik adlar sağlar. |
future_status | Zamanlanmış bekleme işlevinin döndürebileceği nedenlerle sembolik adlar sağlar. |
Başlat | şablon işlevi async için olası modları açıklayan bir bit maskesi türünü temsil eder. |