Udostępnij przez


packaged_task — Klasa

Opisuje asynchronicznego dostawcę, który jest otoką wywołań, którego podpis wywołania to Ty(ArgTypes...). Jego skojarzony stan asynchroniczny zawiera kopię jego wywoływanego obiektu oprócz potencjalnego wyniku.

Składnia

template <class>
class packaged_task;

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
packaged_task packaged_task Tworzy obiekt.
packaged_task::~packaged_task Destruktor packaged_task Niszczy obiekt.

Metody publiczne

Nazwa/nazwisko opis
get_future Zwraca przyszły obiekt, który ma ten sam skojarzony stan asynchroniczny.
make_ready_at_thread_exit Wywołuje obiekt wywoływany przechowywany w skojarzonym stanie asynchronicznym i niepodzieal przechowuje zwracaną wartość.
Zresetować Zastępuje skojarzony stan asynchroniczny.
Wymiany Wymienia skojarzony stan asynchroniczny z określonym obiektem.
Prawidłowe Określa, czy obiekt ma skojarzony stan asynchroniczny.

Operatory publiczne

Nazwa/nazwisko opis
packaged_task::operator= Transferuje skojarzony stan asynchroniczny z określonego obiektu.
packaged_task::operator() Wywołuje obiekt, który jest przechowywany w skojarzonym stanie asynchronicznym, niepodzieal przechowuje zwracaną wartość i ustawia stan na gotowy.
packaged_task::operator bool Określa, czy obiekt ma skojarzony stan asynchroniczny.

Wymagania

Nagłówek:<przyszłość>

Przestrzeń nazw: std

packaged_task::get_future

Zwraca obiekt typu future<Ty> , który ma taki sam skojarzony stan asynchroniczny.

future<Ty> get_future();

Uwagi

packaged_task Jeśli obiekt nie ma skojarzonego stanu asynchronicznego, ta metoda zgłasza future_error z kodem błędu no_state.

Jeśli ta metoda została już wywołana dla packaged_task obiektu, który ma taki sam skojarzony stan asynchroniczny, metoda zgłasza future_error kod future_already_retrievedbłędu .

packaged_task::make_ready_at_thread_exit

Wywołuje obiekt wywoływany przechowywany w skojarzonym stanie asynchronicznym i niepodzieal przechowuje zwracaną wartość.

void make_ready_at_thread_exit(ArgTypes... args);

Uwagi

packaged_task Jeśli obiekt nie ma skojarzonego stanu asynchronicznego, ta metoda zgłasza future_error z kodem błędu no_state.

Jeśli ta metoda lub make_ready_at_thread_exit została już wywołana dla packaged_task obiektu, który ma ten sam skojarzony stan asynchroniczny, metoda zgłasza future_error kod promise_already_satisfiedbłędu .

W przeciwnym razie ten operator wywołuje INVOKE(fn, args..., Ty)metodę , gdzie fn jest obiektem wywoływanym przechowywanym w skojarzonym stanie asynchronicznym. Każda zwrócona wartość jest przechowywana niepodziecznie jako zwrócony wynik skojarzonego stanu asynchronicznego.

W przeciwieństwie do packaged_task::operator(), skojarzony stan asynchroniczny nie jest ustawiany do ready momentu zniszczenia wszystkich obiektów lokalnych wątku w wątku wywołującym. Zazwyczaj wątki, które są blokowane w skojarzonym stanie asynchronicznym, nie są odblokowane, dopóki wątek wywołujący nie zostanie zamknięty.

packaged_task::operator=

Przenosi skojarzony stan asynchroniczny z określonego obiektu.

packaged_task& operator=(packaged_task&& Right);

Parametry

Right
Obiekt packaged_task.

Wartość zwracana

*this

Uwagi

Po operacji right nie ma już skojarzonego stanu asynchronicznego.

packaged_task::operator()

Wywołuje obiekt, który jest przechowywany w skojarzonym stanie asynchronicznym, niepodzieal przechowuje zwracaną wartość i ustawia stan na gotowy.

void operator()(ArgTypes... args);

Uwagi

packaged_task Jeśli obiekt nie ma skojarzonego stanu asynchronicznego, ta metoda zgłasza future_error z kodem błędu no_state.

Jeśli ta metoda lub make_ready_at_thread_exit została już wywołana dla packaged_task obiektu, który ma ten sam skojarzony stan asynchroniczny, metoda zgłasza future_error kod promise_already_satisfiedbłędu .

W przeciwnym razie ten operator wywołuje INVOKE(fn, args..., Ty)metodę , gdzie fn jest obiektem wywoływanym przechowywanym w skojarzonym stanie asynchronicznym. Każda zwrócona wartość jest przechowywana niepodziecznie jako zwrócony wynik skojarzonego stanu asynchronicznego, a stan jest ustawiony na gotowy. W związku z tym wszystkie wątki, które są blokowane w skojarzonym stanie asynchronicznym, stają się odblokowane.

packaged_task::operator bool

Określa, czy obiekt ma obiekt associated asynchronous state.

operator bool() const noexcept;

Wartość zwracana

true jeśli obiekt ma skojarzony stan asynchroniczny; w przeciwnym razie, false.

packaged_task::p ackaged_task, konstruktor

packaged_task Tworzy obiekt.

packaged_task() noexcept;
packaged_task(packaged_task&& Right) noexcept;
template <class Fn>
   explicit packaged_task(Fn&& fn);

template <class Fn, class Alloc>
   explicit packaged_task(
      allocator_arg_t, const Alloc& alloc, Fn&& fn);

Parametry

Right
Obiekt packaged_task.

Alloc
Alokator pamięci. Aby uzyskać więcej informacji, zobacz alokatory>.<

Fn
Obiekt funkcyjny.

Uwagi

Pierwszy konstruktor tworzy packaged_task obiekt, który nie ma skojarzonego stanu asynchronicznego.

Drugi konstruktor konstruuje packaged_task obiekt i przenosi skojarzony stan asynchroniczny z prawej. Po operacji right nie ma już skojarzonego stanu asynchronicznego.

Trzeci konstruktor konstruuje packaged_task obiekt, który ma kopię fn przechowywaną w skojarzonym stanie asynchronicznym.

Czwarty konstruktor tworzy packaged_task obiekt, który ma kopię fn przechowywaną w skojarzonym stanie asynchronicznym i używa alloc go do alokacji pamięci.

packaged_task::~packaged_task Destruktor

packaged_task Niszczy obiekt.

~packaged_task();

Uwagi

Jeśli skojarzony stan asynchroniczny nie jest gotowy, destruktor przechowuje wyjątek future_error, który zawiera kod broken_promise błędu w wyniku skojarzonego stanu asynchronicznego, a wszystkie wątki, które są blokowane w skojarzonym stanie asynchronicznym, stają się odblokowane.

packaged_task::reset

Używa nowego skojarzonego stanu asynchronicznego, aby zastąpić istniejący skojarzony stan asynchroniczny.

void reset();

Uwagi

W efekcie *this = packaged_task(move(fn))ta metoda wykonuje metodę , gdzie fn jest obiektem funkcji przechowywanym w skojarzonym stanie asynchronicznym dla tego obiektu. W związku z tym stan obiektu jest czyszczone, a get_future, operator() i make_ready_at_thread_exit można wywołać tak, jakby na nowo skonstruowanym obiekcie.

packaged_task::swap

Wymienia skojarzony stan asynchroniczny z określonym obiektem.

void swap(packaged_task& Right) noexcept;

Parametry

Right
Obiekt packaged_task.

packaged_task::valid

Określa, czy obiekt ma obiekt associated asynchronous state.

bool valid() const;

Wartość zwracana

true jeśli obiekt ma skojarzony stan asynchroniczny; w przeciwnym razie, false.

Zobacz też

Odwołanie do plików nagłówka
<Przyszłości>