<future>
Zahrňte standardní hlavičku <,> která bude definovat šablony tříd a podpůrné šablony, které zjednodušují spuštění funkce – pravděpodobně v samostatném vlákně – a načítají její výsledek. Výsledkem je buď hodnota vrácená funkcí, nebo výjimka, která je generována funkcí, ale není zachycena ve funkci.
Tato hlavička používá Concurrency Runtime (ConcRT), abyste ji mohli používat společně s dalšími mechanismy ConcRT. Další informace o ConcRT naleznete v tématu Concurrency Runtime.
Syntaxe
#include <future>
Poznámky
Poznámka:
V kódu, který je zkompilován pomocí /clr, je tato hlavička blokována.
Asynchronní zprostředkovatel ukládá výsledek volání funkce. Asynchronní návratový objekt se používá k načtení výsledku volání funkce. Přidružený asynchronní stav poskytuje komunikaci mezi asynchronním zprostředkovatelem a jedním nebo více asynchronními návratovými objekty.
Program nevytvoří přímo žádné přidružené asynchronní stavové objekty. Program vytvoří asynchronního zprostředkovatele, kdykoli ho potřebuje, a z něj vytvoří asynchronní návratový objekt, který sdílí přidružený asynchronní stav s poskytovatelem. Asynchronní zprostředkovatelé a asynchronní návratové objekty spravují objekty, které obsahují jejich sdílený přidružený asynchronní stav. Když poslední objekt, který odkazuje na přidružený asynchronní stav, uvolní, objekt, který obsahuje přidružený asynchronní stav je zničen.
Asynchronní zprostředkovatel nebo asynchronní návratový objekt, který nemá přidružený asynchronní stav, je prázdný.
Přidružený asynchronní stav je připravený pouze v případě, že jeho asynchronní zprostředkovatel uložil návratovou hodnotu nebo uložil výjimku.
Funkce šablony a šablony async
promise
tříd a packaged_task
jsou asynchronní zprostředkovatelé. Šablony future
tříd a shared_future
popisují asynchronní návratové objekty.
Každá ze šablon promise
tříd , future
a shared_future
má specializaci pro typ void
a částečnou specializaci pro ukládání a načítání hodnoty odkazem. Tyto specializace se liší od primární šablony pouze v podpisech a sémantikách funkcí, které ukládají a načítají vrácenou hodnotu.
Šablony future
tříd a shared_future
nikdy neblokují v jejich destruktory, s výjimkou jednoho případu, který je zachován kvůli zpětné kompatibilitě: Na rozdíl od všech ostatních budoucností, pro future
úkol nebo poslední shared_future
– který je připojen k úkolu zahájen std::async
s , bloky destruktoru, pokud úkol nedokončil; to znamená, že blokuje, pokud toto vlákno ještě volat .get()
nebo .wait()
úkol je stále spuštěný. Následující poznámka o použitelnosti byla přidána do popisu std::async
v konceptu standardu: "[Poznámka: Pokud se budoucnost získaná z std::async přesune mimo místní obor, další kód, který bude používat budoucnost, musí vědět, že destruktor budoucnosti může blokovat, aby se sdílený stav připravil.--end poznámka]" Ve všech ostatních případech, future
a shared_future
destruktory jsou povinné a zaručuje se, že se nikdy nezablokují.
Členové
Třídy
Název | Popis |
---|---|
future – třída | Popisuje asynchronní návratový objekt. |
future_error – třída | Popisuje objekt výjimky, který může být vyvolán metodami typů, které spravují future objekty. |
packaged_task – třída | Popisuje asynchronního zprostředkovatele, který je obálka volání a jejíž podpis volání je Ty(ArgTypes...) . Přidružený asynchronní stav obsahuje kopii jeho volatelného objektu kromě potenciálního výsledku. |
promise – třída | Popisuje asynchronního zprostředkovatele. |
shared_future – třída | Popisuje asynchronní návratový objekt. Na rozdíl od objektu future může být asynchronní zprostředkovatel přidružený k libovolnému počtu shared_future objektů. |
Struktury
Název | Popis |
---|---|
is_error_code_enum – struktura | Specializace, která označuje, že future_errc je vhodná pro uložení error_code . |
uses_allocator – struktura | Specializace, která má vždy hodnotu true. |
Funkce
Název | Popis |
---|---|
async | Představuje asynchronního zprostředkovatele. |
future_category | Vrátí odkaz na error_category objekt, který charakterizuje chyby spojené s future objekty. |
make_error_code | Vytvoří objekt error_code , který error_category charakterizuje future chyby. |
make_error_condition | Vytvoří objekt error_condition , který error_category charakterizuje future chyby. |
vyměnit | Vymění přidružený asynchronní stav jednoho promise objektu s jiným objektem. |
Výčty
Název | Popis |
---|---|
future_errc | Poskytuje symbolické názvy chyb hlášených future_error třídou. |
future_status | Poskytuje symbolické názvy z důvodů, proč může funkce časového čekání vrátit. |
spustit | Představuje typ bitové masky, který popisuje možné režimy pro funkci async šablony . |