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 вернулось.

Если будущее является результатом вызова 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/w/cpp/thread/shared_future/wait_until

Spec-Zone.ru

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