Ждет, когда будет готов асинхронный результат, ассоциированный с данным экземпляром std::shared_future
template
future_status wait_for(
std::chrono::duration
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
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()
вернула время, большее или равное absolute_time
.Примечание
. Не дается никаких гарантий относительно того, сколько времени будет блокирован вызывающий поток. Гарантируется лишь, что если функция вернулаstd::future_status::timeout
, то значение, возвращенное Clock::now()
, больше или равно absolute_time
в точке, где поток разблокировался.Нет.
STD::SHARED_FUTURE::GET
Если ассоциированное состояние содержит отложенную функцию, полученную в результате обращения к std::async
std::shared_future
, а затем либо возвращает сохраненное в нем значение, либо возбуждает сохраненное в нем исключение.void shared_future
R& shared_future
R const& shared_future
this->valid()
true
.Обращения из нескольких потоков к функциям get()
wait()
экземпляров std::shared_future
, разделяющих одно и то же ассоциированное состояние, сериализуются. Если ассоциированное состояние содержит отложенную функцию, то первое обращение к get()
или wait()
приводит к вызову этой функции и сохранению возвращенного ей значения или возбужденного ей исключения в асинхронном результате.