Spec-Zone.ru › C++

std::shared_future<T>::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.

Если future является результатом вызова 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 Время ожидания истекло

Исключения

Любое исключение, выброшенное часами, точкой времени или длительностью во время выполнения (часы, точки времени и длительности, предоставляемые стандартной библиотекой, никогда не выбрасывают исключений).

Примечания

Реализациям рекомендуется обнаруживать ситуацию, когда до вызова 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 из-за задержек планирования или конкуренции за ресурсы.

Пример

См. также

wait
ожидает, пока результат станет доступен
(открытая функция-член)
wait_for
ожидает появления результата и возвращает управление, если он не стал доступен в течение указанного интервала ожидания
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/thread/shared_future/wait_until

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API