Объявление
future(future&& other) noexcept;
Результат
Конструирует новый экземпляр std::future
путем перемещения содержимого объекта other
.
Постусловия
Асинхронный результат, ассоциированный с объектом other
перед вызовом конструктора, ассоциируется с вновь сконструированным объектом std::future
. С объектом other
больше не ассоциирован никакой асинхронный результат. Функция this->valid()
возвращает то же значение, которое возвращала функция other.valid()
перед вызовом конструктора. Функция other.valid()
возвращает false
.
Исключения
Нет.
STD::FUTURE
, ПЕРЕМЕЩАЮЩИЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Передает владение асинхронным результатом, ассоциированным с объектом std::future
, другому объекту.
Объявление
future(future&& other) noexcept;
Результат
Передает владение асинхронным состоянием между экземплярами std::future
.
Постусловия
Асинхронный результат, ассоциированный с объектом other перед вызовом оператора, ассоциируется с *this
. Объект *this
перестаёт быть владельцем своего прежнего асинхронного состояния (если оно было с ним ассоциировано), и если эта ссылка на асинхронное состояние была последней, то оно уничтожается. Функция this->valid()
возвращает то же значение, которое возвращала функция other
, valid()
перед вызовом оператора. Функция other.valid()
возвращает false
.
Исключения
Нет.
STD::FUTURE
, ДЕСТРУКТОР
Уничтожает объект std::future
.
Объявление
~future();
Результат
Уничтожает *this
. Если с *this
была ассоциирована последняя ссылка на асинхронный результат (при условии, что с *this
вообще что-то ассоциировано), то этот асинхронный результат уничтожается.
Исключения
Нет.
STD::FUTURE::SHARE
, ФУНКЦИЯ-ЧЛЕН
Конструирует новый экземпляр std::shared_future
и передаёт ему владение асинхронным результатом, ассоциированным с *this
.
Объявление
shared_future share();
Результат
Эквивалентно shared_future(std::move(*this))
.
Постусловия
Асинхронный результат, ассоциированный с объектом *this
перед вызовом share()
(если с ним что-то было ассоциировано), ассоциируется с вновь сконструированным экземпляром std::shared_future
. Функция this->valid()
возвращает false
.
Исключения
Нет.
STD::FUTURE::VALID
, ФУНКЦИЯ-ЧЛЕН
Проверяет, ассоциирован ли с экземпляром std::future
асинхронный результат. Объявление
bool valid() const noexcept;
Возвращаемое значение
true
, если с *this
ассоциирован асинхронный результат, иначе false
.
Исключения
Нет.
STD::FUTURE::WAIT
, ФУНКЦИЯ-ЧЛЕН
Если состояние, ассоциированное с *this
, содержит отложенную функцию, то эта функция вызывается. В противном случае ждет, пока будет готов асинхронный результат, ассоциированный с данным экземпляром std::future
.
Объявление
void wait();
Предусловия
this->valid()
должно возвращать true
.
Результат
Если ассоциированное состояние содержит отложенную функцию, то вызывает эту функцию и сохраняет возвращенное ей значение или объект-исключение в виде асинхронного результата. В противном случае блокирует поток до момента готовности асинхронного результата, ассоциированного с *this
.
Исключения
Нет.
STD::FUTURE::WAIT_FOR
, ФУНКЦИЯ-ЧЛЕН
Ждет, когда будет готов асинхронный результат, ассоциированный с данным экземпляром std::future
, или истечет заданное время.
Объявление
template
future_status wait_for(
std::chrono::duration const& relative_time);
Предусловия
this->valid()
должно возвращать true
.
Результат
Если асинхронный результат, ассоциированный с *this
, содержит отложенную функцию, полученную обращением к std::async
, и эта функция, еще не начала исполняться, то возвращает управление немедленно без блокирования потока. В противном случае блокирует поток до момента готовности асинхронного результата, ассоциированного с *this
, или до истечения времени, заданного в аргументе relative_time
.
Возвращаемое значение
std::future_status::deferred
, если асинхронный результат, ассоциированный с *this
, содержит отложенную функцию, полученную обращением к std::async
, и эта функция, еще не начала исполняться. std::future_status::ready
, если асинхронный результат, ассоциированный с *this
, готов, std::future_status::timeout
, если истекло время, заданное в аргументе relative_time
.
Читать дальше