std::future — это класс-шаблон в C++, представляющий результат (значение или исключение) асинхронной операции, который станет доступным в будущем. Он используется для получения результата выполнения задачи, запущенной в отдельном потоке или посредством std::async.
Ключевые особенности:
get() позволяет получить результат операции. Если результат еще не готов, get() заблокирует текущий поток до его готовности или до получения исключения.std::promise, который предоставляет способ установить результат или исключение.std::future имеет состояние, указывающее, готов ли результат. Можно проверить с помощью wait() или wait_for().get() можно вызвать только один раз для каждого объекта std::future.Пример использования с std::async:
c
Пример использования с std::promise:
c
Важные методы std::future:
| Метод | Описание |
|---|---|
get() | Получает результат. Блокирует, если результат еще не готов. Может быть вызван только один раз. |
valid() | Проверяет, связан ли std::future с общим состоянием асинхронной операции. |
wait() | Блокирует текущий поток до тех пор, пока результат не станет доступным (или не будет выброшено исключение). |
wait_for() | Ожидает результат в течение заданного интервала времени. Возвращает статус ожидания. |
wait_until() | Ожидает результат до заданного момента времени. Возвращает статус ожидания. |
std::future является частью библиотеки <future> и предоставляет удобный способ управления результатами асинхронных вычислений, упрощая разработку многопоточных приложений.