Класс future
Описывает асинхронный возвращаемый объект.
Синтаксис
template <class Ty>
class future;
Замечания
Каждый стандартный асинхронный поставщик возвращает объект, тип которого является экземпляром данного шаблона. Объект future
предоставляет единственный доступ к асинхронным поставщику, с которым он связан. Если требуется несколько асинхронных возвращаемых объектов, связанных с тем же асинхронным поставщиком, скопируйте future
объект в shared_future
объект.
Участники
Открытые конструкторы
Имя | Описание |
---|---|
future |
Формирует объект future . |
Открытые методы
Имя | Описание |
---|---|
get |
Получает результат, который хранится в связанном асинхронном состоянии. |
share |
Преобразует объект в shared_future . |
valid |
Указывает, не является ли объект пустым. |
wait |
Блокирует текущий поток, пока связанное асинхронное состояние не будет иметь значение ready. |
wait_for |
Выполняет блокировку, пока не будет готово связанное асинхронное состояние или не истечет указанный период времени. |
wait_until |
Выполняет блокировку, пока не будет готово связанное асинхронное состояние или не наступит указанный момент времени. |
Открытые операторы
Имя | Описание |
---|---|
future::operator= |
Передает связанное асинхронное состояние от указанного объекта . |
Требования
Заголовок: <future>
Пространство имен: std
Конструкторы
Формирует объект future
.
future() noexcept;
future(future&& Other) noexcept;
Параметры
Other
Объект future
.
Замечания
Первый конструктор создает объект future
, который не имеет связанного асинхронного состояния.
Второй конструктор создает future
объект и передает связанное асинхронное состояние из Other. Другие больше не имеют связанного асинхронного состояния.
get
Получает результат, который хранится в связанном асинхронном состоянии.
Ty get();
Возвращаемое значение
Если результат — исключение, метод создает его повторно. В противном случае результат будет возвращен.
Замечания
До получения результата данный метод блокирует текущий поток, пока не будет готово связанное асинхронное состояние.
Для частичной специализации future<Ty&>
хранимое значение является ссылкой на объект, который был передан асинхронному поставщику как возвращаемое значение.
Так как для специализации future<void>
хранимые значения не существуют, метод возвращает void
.
В других специализациях метод перемещает свое возвращаемое значение из сохраненного значения. Таким образом, этот метод следует вызывать только один раз.
operator=
Передает связанное асинхронное состояние из указанного объекта.
future& operator=(future&& Right) noexcept;
Параметры
Right
Объект future
.
Возвращаемое значение
*this
Замечания
После передачи права больше не имеет связанного асинхронного состояния.
share
Преобразует объект в shared_future
объект.
shared_future<Ty> share();
Возвращаемое значение
shared_future(move(*this))
valid
Указывает, имеет ли объект связанное асинхронное состояние.
bool valid() noexcept;
Возвращаемое значение
Значение true
, если объект имеет связанное асинхронное состояние; в противном случае — значение false
.
wait
Блокирует текущий поток, пока связанное асинхронное состояние не получит значение ready.
void wait() const;
Замечания
Связанное асинхронное состояние имеет значение ready, только если его асинхронный поставщик сохранил возвращаемое значение или исключение.
wait_for
Блокирует текущий поток, пока связанное асинхронное состояние не получит значение ready или не истечет указанный период времени.
template <class Rep, class Period>
future_status wait_for(const chrono::duration<Rep, Period>& Rel_time) const;
Параметры
Rel_time
chrono::duration
Объект, указывающий максимальный интервал времени, который блокирует поток.
Возвращаемое значение
Значение, future_status
указывающее причину возврата.
Замечания
Связанное асинхронное состояние имеет значение "ready", только если его асинхронный поставщик сохранил возвращаемое значение или исключение.
wait_until
Блокирует текущий поток, пока связанное асинхронное состояние не получит значение ready или не наступит указанный момент времени.
template <class Clock, class Duration>
future_status wait_until(const chrono::time_point<Clock, Duration>& Abs_time) const;
Параметры
Abs_time
time_point
Объект, задающий время, после которого поток может разблокироваться.
Возвращаемое значение
Значение, future_status
указывающее причину возврата.
Замечания
Связанное асинхронное состояние имеет значение ready, только если его асинхронный поставщик сохранил возвращаемое значение или исключение.