Sdílet prostřednictvím


<future>

Zahrnuje standardní hlavičku <future> k definování šablon tříd a podpůrných šablon, které zjednodušují spuštění funkce, případně v samostatném vláknu, a načítání jejího výsledku.Výsledkem je hodnota vrácená funkcí nebo výjimka, která je vygenerována touto funkcí, ale není ve funkci zachycena.

Toto hlavička používá modul Concurrency Runtime (ConcRT), takže ji lze použít společně s jinými mechanismy modulu ConcRT.Další informace o modulu ConcRT naleznete v tématu Concurrency Runtime.

#include <future>

Poznámky

[!POZNÁMKA]

V kódu, který je zkompilován s použitím možností /clr nebo /clr:pure je tato hlavička blokována.

Asynchronní poskytovatel uloží výsledek volání funkce.Asynchronní vrácení objektu se používá k získání výsledku volání funkce.Přidružený asynchronní stav zajišťuje komunikaci mezi asynchronním poskytovatelem a jedním nebo více objekty asynchronního navrácení.

Program přímo nevytvoří žádné přidružené objekty s asynchronním stavem.Program vytvoří asynchronního zprostředkovatele vždy, když je potřeba, ze kterého vytvoří asynchronní vrácení objektu, který sdílí jeho přidružený asynchronní stav s tímto poskytovatelem.Asynchronní poskytovatelé a asynchronní vrácené objekty spravují objekty, které uchovávají jejich sdílené přidružené asynchronní stavy.Když jej poslední objekt, který odkazuje na přidružený asynchronní státě uvolní, je objekt, který uchovává přidružený asynchronní stav zničen.

Asynchronní poskytovatel nebo asynchronní vrácení objektu, které nemá přidružený žádný asynchronní stav je prázdné.

Asynchronní přidružený stav je připraven pouze v případě, že má asynchronní zprostředkovatel uloženu návratovou hodnotu nebo výjimku.

Šablona funkce async a šablony třídy promise a packaged_task jsou asynchronní poskytovatelé.Šablony tříd future a shared_future popisují asynchronní vrácení objektů.

Všechny šablony tříd promise, future a shared_future mají specializaci typu void a částečnou specializaci pro ukládání a načítání hodnot odkazem.Tyto specializace se liší od primární šablony pouze v signaturách a sémantice funkcí, které slouží k ukládání a načítání vrácené hodnoty.

Objekty future a shared_future nikdy neblokují své destruktory, kromě jediného případu, který je zachován z důvodu zpětné kompatibility. Na rozdíl od jiných objektů future objekt future nebo poslední objekt shared_future připojený k úkolu započatému voláním funkce std::async, destruktor blokuje, pokud úkol nebyl dokončen, tedy blokuje, pokud podproces dosud nezavolal metodu .get() nebo .wait() a tento úkol je stále spuštěn.Následující poznámka použitelnosti byla přidána do popisu funkce std::async v návrhu standardu: „[Poznámka: Pokud je objekt future z funkce std::async přesunut mimo místní rozsah, jiný kód, který používá tento objekt future, musí být vědom, že destruktor objektu future může blokovat sdílený stav, aby se stal připravený. – konec poznámky]“. Ve všech ostatních případech jsou destruktory objektů future a shared_future vyžadovány a zaručují, že nikdy nebudou blokovány.

Členy

Třídy

Name

Popis

future – třída

Popisuje asynchronní vrácený objekt.

future_error – třída

Popisuje objekt výjimky, který může být vyvolán metodami typů, které spravují objekty future.

packaged_task – třída

Popisuje asynchronního poskytovatele, který je obálkou volání a jehož signatura volání je Ty(ArgTypes...).Jeho přidružený asynchronní stav kromě možných výsledků uchovává kopii volatelného objektu.

promise – třída

Popisuje asynchronního poskytovatele.

shared_future – třída

Popisuje asynchronní vrácený objekt.Na rozdíl od objektu future lze asynchronního poskytovatele přiřadit k libovolnému počtu objektů shared_future.

Struktury

Name

Popis

is_error_code_enum – struktura

Specializace, která označuje, že je objekt future_errc vhodný pro uložení objektu error_code.

uses_allocator – struktura

Specializace, která vždy uchovává hodnotu true.

Funkce

Name

Popis

async – funkce

Představuje asynchronního poskytovatele.

future_category – funkce

Vrátí odkaz na objekt error_category označující chyby, které jsou přidruženy objektům future.

make_error_code – funkce

Vytvoří objekt error_code, který má objekt error_category charakterizující chyby objektu future.

make_error_condition – funkce

Vytvoří objekt error_condition, který má objekt error_category charakterizující chyby objektu future.

swap – funkce (<future>)

Vymění přidružený asynchronní stav jednoho z objektů promise za stav jiného objektu.

Výčty

Name

Popis

future_errc – výčet

Poskytuje symbolické názvy chyb, které jsou hlášeny třídou future_error.

future_status – výčet

Poskytuje symbolické názvy důvodů, které může časovaná čekající funkce vrátit.

launch – výčet

Představuje typ maskování bitů, který popisuje možné režimy šablony funkce async.

Viz také

Další zdroje

Standardní knihovna C++ – hlavičkové soubory