Future 类型详解
本文主要介绍 std::future
,std::shared_future
以及 std::future_error
,另外还会介绍 <future>
头文件中的 std::async
,std::future_category
函数以及相关枚举类型。
std::future
详解
std::future
概述
前面已经多次提到过 std::future
,那么 std::future
究竟是什么呢?简单地说,std::future
可以用来获取异步任务的结果,因此可以把它当成一种简单的线程间同步的手段。std::future
通常由某个 Provider 创建,你可以把 Provider 想象成一个异步任务的提供者,Provider 在某个线程中设置共享状态的值,与该共享状态相关联的 std::future
对象调用 get
(通常在另外一个线程中) 获取该值,如果共享状态的标志不为 ready
,则调用 std::future::get
会阻塞当前的调用者,直到 Provider 设置了共享状态的值(此时共享状态的标志变为 ready
),std::future::get
返回异步任务的值或异常(如果发生了异常)。
一个有效(valid<