Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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;
Elementy członkowskie
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ść. |
| resetować | Zastępuje skojarzony stan asynchroniczny. |
| zamiana | Wymienia skojarzony stan asynchroniczny z określonym obiektem. |
| ważny | 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.