Поделиться через


<future>

Включите стандартный заголовок <в будущее> , чтобы определить шаблоны классов и вспомогательные шаблоны, упрощающие выполнение функции ( возможно, в отдельном потоке) и получение результата. Результатом является значение, возвращаемое функцией, или исключение, которое вызывается функцией, но не перехватывается в функции.

Этот заголовок использует среду выполнения с параллелизмом (ConcRT), чтобы ее можно было использовать вместе с другими механизмами ConcRT. Дополнительные сведения о ConcRT см. в статье Среда выполнения с параллелизмом.

Синтаксис

#include <future>

Замечания

Примечание.

В коде, скомпилированном с помощью /clr, этот заголовок блокируется.

Асинхронный поставщик сохраняет результат вызова функции. Асинхронный возвращаемый объект используется для получения результата вызова функции. Связанное асинхронное состояние обеспечивает связь между асинхронным поставщиком и одним или несколькими асинхронными возвращаемыми объектами.

Сама программа не создает объекты связанного асинхронного состояния. Программа создает асинхронного поставщика каждый раз, когда он необходим, и из него она создает асинхронный возвращаемый объект, который использует свое связанное асинхронное состояние совместно с поставщиком. Асинхронные поставщики и асинхронные возвращаемые объекты управляют объектами, содержащими свои общие связанные асинхронные состояния. Когда последний объект, который ссылается на связанное асинхронное состояние, освобождает его, объект, содержащий связанное асинхронное состояние, уничтожается.

Асинхронный поставщик или асинхронный возвращаемый объект, у которого нет связанного асинхронного состояния, является пустым.

Связанное асинхронное состояние имеет значение ready, только если его асинхронный поставщик сохранил возвращаемое значение или исключение.

Функция async шаблона и шаблоны классов и packaged_task асинхронные поставщикиpromise. Шаблоны классов и shared_future описание асинхронных future возвращаемых объектов.

Каждый из шаблонов promisefutureклассов и shared_future имеет специализацию для типа void и частичной специализации для хранения и получения значения по ссылке. Эти специализации отличаются от первичного шаблона только сигнатурами и семантикой функций, которые хранят и извлекают возвращаемое значение.

Шаблоны классов и shared_future никогда не блокируются в деструкторах, за исключением одного случая, который сохраняется для обратной совместимости: в отличие от всех остальных фьючерсов, для shared_futurefutureзадачи , присоединенной к задачеstd::async, запущенной с, деструктор блокирует, если задача не завершена; то есть он блокирует, если этот поток еще не вызывает .get() или .wait() задача по-прежнему выполняется.future В описание std::async проекта добавлено следующее примечание о удобствах использования: "Если будущее, полученное из std::async перемещается за пределы локального область, другой код, использующий будущее, должен знать, что деструктор будущего может блокироваться для того, чтобы общее состояние стало готовым.-end note]" Во всех других случаях future и деструкторы являются обязательными и shared_future гарантированно никогда не блокируются.

Участники

Классы

Имя Описание
Класс future Описывает асинхронный возвращаемый объект.
Класс future_error Описывает объект исключения, который можно вызывать методами типов, управляющих объектами future.
Класс packaged_task Описывает асинхронного поставщика, который является оболочкой вызова с сигнатурой вызова Ty(ArgTypes...). Его связанное асинхронное состояние содержит копию его вызываемого объекта, помимо возможных результатов.
Класс promise Описывает асинхронный поставщик.
Класс shared_future Описывает асинхронный возвращаемый объект. В отличие от объекта future, асинхронный поставщик может быть связан с любым количеством объектов shared_future.

Структуры

Имя Описание
Структура is_error_code_enum Специализация, которая указывает, что future_errc подходит для хранения error_code.
Структура uses_allocator Специализация, которая всегда содержит значение true.

Функции

Имя Описание
async Представляет асинхронного поставщика.
future_category Возвращает ссылку на объект error_category, характеризующий ошибки, связанные с объектами future.
make_error_code Создает error_code, который имеет объект error_category, характеризующий ошибки future.
make_error_condition Создает error_condition, который имеет объект error_category, характеризующий ошибки future.
swap Меняет местами связанное асинхронное состояние одного объекта promise с состоянием другого объекта.

Перечисления

Имя Описание
future_errc Предоставляет символические имена для всех ошибок, о которых сообщает класс future_error.
future_status Предоставляет символические имена по причинам, которые может возвращать привязанная по времени функция wait.
Запуска Представляет тип битовой маски, который описывает возможные режимы для функции-шаблона async.

См. также

Справочник по файлам заголовков