Udostępnij za pośrednictwem


<future>

Dołącz standardową przyszłość> nagłówka<, aby zdefiniować szablony klas i szablony pomocnicze, które upraszczają uruchamianie funkcji — prawdopodobnie w osobnym wątku — i pobierają jego wynik. Wynikiem jest wartość zwracana przez funkcję lub wyjątek emitowany przez funkcję, ale nie jest przechwycony w funkcji.

Ten nagłówek używa środowiska uruchomieniowego współbieżności (ConcRT), aby można było go używać razem z innymi mechanizmami ConcRT. Aby uzyskać więcej informacji na temat środowiska ConcRT, zobacz Środowisko uruchomieniowe współbieżności.

Składnia

#include <future>

Uwagi

Uwaga

W kodzie skompilowanym przy użyciu / clr ten nagłówek jest blokowany.

Dostawca asynchroniczny przechowuje wynik wywołania funkcji. Asynchroniczny obiekt zwracany jest używany do pobierania wyniku wywołania funkcji. Skojarzony stan asynchroniczny zapewnia komunikację między dostawcą asynchronicznym a co najmniej jednym obiektem zwracanym asynchronicznym.

Program nie tworzy bezpośrednio żadnych skojarzonych obiektów stanu asynchronicznego. Program tworzy dostawcę asynchronicznego za każdym razem, gdy potrzebuje dostawcy i z niego tworzy asynchroniczny obiekt zwracany, który współudzieli skojarzony stan asynchroniczny z dostawcą. Asynchroniczne dostawcy i asynchroniczne obiekty powrotne zarządzają obiektami, które przechowują ich współużytkowany skojarzony stan asynchroniczny. Gdy ostatni obiekt odwołujący się do skojarzonego stanu asynchronicznego zwalnia go, obiekt, który przechowuje skojarzony stan asynchroniczny, zostanie zniszczony.

Dostawca asynchroniczny lub asynchroniczny obiekt zwracany, który nie ma skojarzonego stanu asynchronicznego, jest pusty.

Skojarzony stan asynchroniczny jest gotowy tylko wtedy, gdy jego dostawca asynchroniczny przechowywał wartość zwracaną lub przechowywał wyjątek.

Funkcja async szablonu oraz szablony promise klas i packaged_task są dostawcami asynchronicznymi. Szablony future klas i shared_future opisują asynchroniczne obiekty zwracane.

Każdy z szablonów promiseklas , futurei shared_future ma specjalizację typu void i częściową specjalizację do przechowywania i pobierania wartości według odwołania. Te specjalizacje różnią się od szablonu podstawowego tylko w podpisach i semantyce funkcji, które przechowują i pobierają zwracaną wartość.

Szablony future klas i shared_future nigdy nie blokują w swoich destruktorach, z wyjątkiem jednego przypadku, który jest zachowany w celu zapewnienia zgodności z poprzednimi wersjami: w przeciwieństwie do wszystkich pozostałych przyszłości dla futureelementu — lub ostatniego shared_future— dołączonego do zadania uruchomionego z std::async, bloki destruktora, jeśli zadanie nie zostało ukończone; to znaczy, że blokuje, jeśli ten wątek nie został jeszcze wywołany .get() lub .wait() zadanie jest nadal uruchomione. Następująca uwaga dotycząca użyteczności została dodana do opisu std::async w wersji roboczej standardu: "[Uwaga: Jeśli przyszłość uzyskana z std::async zostanie przeniesiona poza zakres lokalny, inny kod, który korzysta z przyszłości, musi być świadomy, że destruktor przyszłości może zablokować stan udostępniony do gotowości.— uwaga końcowa]" We wszystkich innych przypadkach, future i shared_future destruktory są wymagane i nie mają gwarancji, że nigdy nie blokuj.

Elementy członkowskie

Klasy

Nazwa/nazwisko opis
future, klasa Opisuje asynchroniczny obiekt zwracany.
future_error, klasa Opisuje obiekt wyjątku, który może być zgłaszany przez metody typów, które zarządzają future obiektami.
packaged_task, klasa Opisuje asynchronicznego dostawcę, który jest otoką wywołań i którego podpis wywołania to Ty(ArgTypes...). Jego skojarzony stan asynchroniczny zawiera kopię jego wywoływanego obiektu oprócz potencjalnego wyniku.
promise, klasa Opisuje dostawcę asynchronicznego.
shared_future, klasa Opisuje asynchroniczny obiekt zwracany. W przeciwieństwie do future obiektu dostawca asynchroniczny może być skojarzony z dowolną liczbą shared_future obiektów.

Struktury

Nazwa/nazwisko opis
is_error_code_enum, struktura Specjalizacja wskazująca, że future_errc jest odpowiednia do przechowywania elementu error_code.
uses_allocator, struktura Specjalizacja, która zawsze ma wartość true.

Funkcje

Nazwa/nazwisko opis
async Reprezentuje dostawcę asynchronicznego.
future_category Zwraca odwołanie do error_category obiektu, który charakteryzuje błędy skojarzone z obiektami future .
make_error_code Tworzy obiekt error_code , który charakteryzuje error_category future błędy.
make_error_condition Tworzy obiekt error_condition , który charakteryzuje error_category future błędy.
zamiana Wymienia skojarzony stan asynchroniczny jednego promise obiektu z innym.

Wyliczenia

Nazwa/nazwisko opis
future_errc Dostarcza symboliczne nazwy błędów zgłaszanych przez klasę future_error .
future_status Dostarcza nazwy symboliczne z powodów, dla których funkcja oczekiwania czasowego może zwrócić.
uruchomić Reprezentuje typ maski bitowej, który opisuje możliwe tryby dla funkcji asyncszablonu .

Zobacz też

Odwołanie do plików nagłówka