std::shared_future<T>:: wait_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Getting the result | ||||
| State | ||||
|
shared_future::wait_until
|
|
template
<
class
Clock,
class
Duration
>
std:: future_status wait_until ( const std:: chrono :: time_point < Clock,Duration > & timeout_time ) const ; |
(начиная с C++11) | |
wait_until
ожидает, пока результат станет доступным. Он блокируется до тех пор, пока не будет достигнуто указанное
timeout_time
или результат станет доступным, в зависимости от того, что наступит раньше. Возвращаемое значение указывает причину, по которой
wait_until
завершил ожидание.
Если будущий объект является результатом вызова async с отложенным вычислением, эта функция возвращает управление немедленно без ожидания.
Поведение не определено, если
valid()
равно
false
до вызова этой функции, или
Clock
не удовлетворяет
Clock
требованиям.
Программа является некорректной, если
std::
chrono
::
is_clock_v
<
Clock
>
равно
false
.
(начиная с C++20)
Содержание |
Параметры
| timeout_time | - | максимальная точка времени до которой будет блокировка |
Возвращаемое значение
| Константа | Объяснение |
| future_status::deferred | Общее состояние содержит отложенную функцию, использующую ленивые вычисления, поэтому результат будет вычислен только при явном запросе |
| future_status::ready | Результат готов |
| future_status::timeout | Время ожидания истекло |
Исключения
Любое исключение, выброшенное clock, time_point или duration во время выполнения (часы, временные точки и длительности, предоставляемые стандартной библиотекой, никогда не выбрасывают исключений).
Примечания
Реализациям рекомендуется обнаруживать случай, когда valid ( ) == false до вызова и выбрасывать std::future_error с кодом ошибки future_errc::no_state .
Стандарт рекомендует использовать часы, связанные с
timeout_time
для измерения времени; эти часы не обязаны быть монотонными. Нет никаких гарантий относительно поведения этой функции, если часы прерывисто корректируются, но существующие реализации преобразуют
timeout_time
из
Clock
в
std::chrono::system_clock
и делегируют вызов POSIX
pthread_cond_timedwait
, чтобы ожидание учитывало корректировки системных часов, но не пользовательских
Clock
. В любом случае, функция также может ожидать дольше, чем до момента достижения
timeout_time
из-за задержек планирования или конкуренции за ресурсы.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
ожидает, пока результат станет доступным
(публичная функция-член) |
|
|
ожидает результат, возвращает управление, если результат недоступен в течение указанного времени ожидания
(публичная функция-член) |