Исключения
Нет.
STD::SHARED_FUTURE::WAIT_FOR
, ФУНКЦИЯ-ЧЛЕН
Ждет, когда будет готов асинхронный результат, ассоциированный с данным экземпляром std::shared_future
, или истечет заданное время.
Объявление
template
future_status wait_for(
std::chrono::duration const& relative_time) const;
Предусловия
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
.
Примечание. Поток может быть заблокирован на время, превышающее указанное. Если возможно, время измеряется по стабильным часам.
Исключения
Нет.
STD::SHARED_FUTURE::WAIT_UNTIL
, ФУНКЦИЯ-ЧЛЕН
Ждет, когда будет готов асинхронный результат, ассоциированный с данным экземпляром std::shared_future
, или наступит заданный момент времени.
Объявление
template
bool wait_until(
std::chrono::time_point const& absolute_time) const;
Предусловия
this->valid()
должно возвращать true
.
Результат
Если асинхронный результат, ассоциированный с *this
, содержит отложенную функцию, полученную обращением к std::async
, и эта функция, еще не начала исполняться, то возвращает управление немедленно без блокирования потока. В противном случае блокирует поток до момента готовности асинхронного результата, ассоциированного с *this
, или до момента, когда функция Clock::now()
вернет время, большее или равное absolute_time
.
Возвращаемое значение
std::future_status::deferred
, если асинхронный результат, ассоциированный с *this
, содержит отложенную функцию, полученную обращением к std::async
, и эта функция, еще не начала исполняться. std::future_status::ready
, если асинхронный результат, ассоциированный с *this
, готов, std::future_status::timeout
, если Clock::now()
вернула время, большее или равное a bsolute_time
.
Примечание. Не дается никаких гарантий относительно того, сколько времени будет блокирован вызывающий поток. Гарантируется лишь, что если функция вернула std::future_status::timeout
, то значение, возвращенное Clock::now()
, больше или равно absolute_time
в точке, где поток разблокировался.
Исключения
Нет.
STD::SHARED_FUTURE::GET
, ФУНКЦИЯ-ЧЛЕН
Если ассоциированное состояние содержит отложенную функцию, полученную в результате обращения к std::async
, то вызывает эту функцию и возвращает результат. В противном случае ждет готовности асинхронного результата, ассоциированного с экземпляром std::shared_future
, а затем либо возвращает сохраненное в нем значение, либо возбуждает сохраненное в нем исключение.
Объявление
void shared_future::get() const;
R& shared_future::get() const;
R const& shared_future::get() const;
Предусловия
this->valid()
должно возвращать true
.
Результат
Обращения из нескольких потоков к функциям get()
и wait()
экземпляров std::shared_future
, разделяющих одно и то же ассоциированное состояние, сериализуются. Если ассоциированное состояние содержит отложенную функцию, то первое обращение к get()
или wait()
приводит к вызову этой функции и сохранению возвращенного ей значения или возбужденного ей исключения в асинхронном результате.
Блокирует поток, пока не будет готов асинхронный результат, ассоциированный с *this
. Если в результате хранится исключение, возбуждает его, иначе возвращает хранящееся значение.
Возвращаемое значение
Если ResultType
— void
, то функция просто возвращает управление. Если ResultType
— R&
для некоторого типа R
, то возвращает хранящуюся ссылку. Иначе возвращает константную ссылку на хранящееся значение.
Читать дальше