<future>
Включите стандартный заголовок <в будущее> , чтобы определить шаблоны классов и вспомогательные шаблоны, упрощающие выполнение функции ( возможно, в отдельном потоке) и получение результата. Результатом является значение, возвращаемое функцией, или исключение, которое вызывается функцией, но не перехватывается в функции.
Этот заголовок использует среду выполнения с параллелизмом (ConcRT), чтобы ее можно было использовать вместе с другими механизмами ConcRT. Дополнительные сведения о ConcRT см. в статье Среда выполнения с параллелизмом.
Синтаксис
#include <future>
Замечания
Примечание.
В коде, скомпилированном с помощью /clr, этот заголовок блокируется.
Асинхронный поставщик сохраняет результат вызова функции. Асинхронный возвращаемый объект используется для получения результата вызова функции. Связанное асинхронное состояние обеспечивает связь между асинхронным поставщиком и одним или несколькими асинхронными возвращаемыми объектами.
Сама программа не создает объекты связанного асинхронного состояния. Программа создает асинхронного поставщика каждый раз, когда он необходим, и из него она создает асинхронный возвращаемый объект, который использует свое связанное асинхронное состояние совместно с поставщиком. Асинхронные поставщики и асинхронные возвращаемые объекты управляют объектами, содержащими свои общие связанные асинхронные состояния. Когда последний объект, который ссылается на связанное асинхронное состояние, освобождает его, объект, содержащий связанное асинхронное состояние, уничтожается.
Асинхронный поставщик или асинхронный возвращаемый объект, у которого нет связанного асинхронного состояния, является пустым.
Связанное асинхронное состояние имеет значение ready, только если его асинхронный поставщик сохранил возвращаемое значение или исключение.
Функция async
шаблона и шаблоны классов и packaged_task
асинхронные поставщикиpromise
. Шаблоны классов и shared_future
описание асинхронных future
возвращаемых объектов.
Каждый из шаблонов promise
future
классов и shared_future
имеет специализацию для типа void
и частичной специализации для хранения и получения значения по ссылке. Эти специализации отличаются от первичного шаблона только сигнатурами и семантикой функций, которые хранят и извлекают возвращаемое значение.
Шаблоны классов и shared_future
никогда не блокируются в деструкторах, за исключением одного случая, который сохраняется для обратной совместимости: в отличие от всех остальных фьючерсов, для shared_future
future
задачи , присоединенной к задаче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 . |