Sdílet prostřednictvím


<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 asyncpromise 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 promisetříd , futurea 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::asyncs , 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

Jméno 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

Jméno 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

Jméno 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.
Swap Vymění přidružený asynchronní stav jednoho promise objektu s jiným objektem.

Výčty

Jméno 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.
Spuštění Představuje typ bitové masky, který popisuje možné režimy pro funkci asyncšablony .

Viz také

Referenční informace k souborům hlaviček