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


Класс shared_future

Описывает асинхронный возвращаемый объект. В отличие от объекта future, асинхронный поставщик может быть связан с любым числом объектов shared_future.

Синтаксис

template <class Ty>
class shared_future;

Замечания

Не вызывайте методы, отличные от valid, и деструктор для shared_future объекта, пустого. operator=

shared_future объекты не синхронизированы. Вызов методов из нескольких потоков для одного объекта становится причиной состязания за данные с непредсказуемыми результатами.

Участники

Открытые конструкторы

Имя Описание
Shared_future Формирует объект shared_future.

Открытые методы

Имя Описание
get Получает результат, который хранится в связанном асинхронном состоянии.
Действительны Указывает, не является ли объект пустым.
Подожди Блокирует текущий поток, пока связанное асинхронное состояние не будет иметь значение ready.
wait_for Выполняет блокировку, пока не будет готово связанное асинхронное состояние или не истечет указанный период времени.
wait_until Выполняет блокировку, пока не будет готово связанное асинхронное состояние или не наступит указанный момент времени.

Открытые операторы

Имя Описание
shared_future::operator= Назначает новое связанное асинхронное состояние.

Требования

Заголовок:<будущее>

Пространство имен: std

shared_future::get

Получает результат, который хранится в связанном асинхронном состоянии.

const Ty& get() const;

Ty& get() const;

void get() const;

Замечания

Если результат — исключение, метод создает его повторно. В противном случае результат будет возвращен.

До получения результата данный метод блокирует текущий поток, пока не будет готово связанное асинхронное состояние.

Для частичной специализации shared_future<Ty&> хранимое значение является ссылкой на объект, который был передан асинхронному поставщику как возвращаемое значение.

Так как для специализации shared_future<void> хранимые значения не существуют, метод возвращает void.

shared_future::operator=

Передает связанное асинхронное состояние из указанного объекта.

shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);

Параметры

Right
Объект shared_future.

Возвращаемое значение

*this

Замечания

Для первого оператора права больше не имеет связанного асинхронного состояния после операции.

Во втором методе Right поддерживает связанное асинхронное состояние.

Конструктор shared_future::shared_future

Формирует объект shared_future.

shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);

Параметры

Right
Класс future или объект shared_future.

Замечания

Первый конструктор создает объект shared_future, который не имеет связанного асинхронного состояния.

Второй и третий shared_future конструкторы создают объект и передают связанное асинхронное состояние из Right. Право больше не имеет связанного асинхронного состояния.

Четвертый shared_future конструктор создает объект, имеющий то же асинхронное состояние, что и Right.

shared_future::valid

Указывает, имеет ли объект связанное асинхронное состояние.

bool valid() noexcept;

Возвращаемое значение

Значение true, если объект имеет связанное асинхронное состояние; в противном случае — значение false.

shared_future::wait

Блокирует текущий поток, пока связанное асинхронное состояние не будет иметь значение ready.

void wait() const;

Замечания

Связанное асинхронное состояние имеет значение "ready", только если его асинхронный поставщик сохранил возвращаемое значение или исключение.

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

shared_future::wait_until

Блокирует текущий поток, пока связанное асинхронное состояние не получит значение ready или не наступит указанный момент времени.

template <class Clock, class Duration>
future_status wait_until(
    const chrono::time_point<Clock, Duration>& Abs_time) const;

Параметры

Abs_time
Объект chrono::time_point, который указывает время, по истечении которого поток можно разблокировать.

Возвращаемое значение

Состояние future_status, которое указывает причину возврата.

Замечания

Связанное асинхронное состояние имеет значение "ready", только если его асинхронный поставщик сохранил возвращаемое значение или исключение.

См. также

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