Поделиться через


Класс 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, только если его асинхронный поставщик сохранил возвращаемое значение или исключение.

См. также

Справочник по файлам заголовков
<future>