Namespaces
Variants

std::shared_future<T>:: wait_until

From cppreference.net

Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
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 из-за задержек планирования или конкуренции за ресурсы.


Пример

Смотрите также

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