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