[C++ 11] --- 线程异步
C++ 并发三剑客, future, promise以及async用法。这三个类是实现并发技术的关键
1 std::future
1.1 std::future介绍
C++11 提供了std::future类模板,future 对象提供访问异步操作结果的机制,很轻松解决从异步任务中返回结果。
在 C++ 标准库中,有两种“期望”,使用两种类型模板实现
唯一期望(unique futures,std::future<>) 实例只能与一个指定事件相关联。共享期望(shared futures, std::shared_future<>) 实例能关联多个事件。
事实上,一个std::future对象在内部存储一个将来会被某个 provider 赋值的值,并提供了一个访问该值的机制,通过get()成员函数实现。但如果有人试图在get()函数可用之前通过它来访问相关的值,那么get()函数将会阻塞,直到该值可用。
一个有效的std::future对象通常由以下三种 Provider 创建,并和某个共享状态相关联。Provider 可以是函数或者类,他们分别是:
std::async函数std::