C++11promise和future介绍
Posted 林多
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++11promise和future介绍相关的知识,希望对你有一定的参考价值。
【C++11】promise和future介绍
- C++11提供了std::promise和std::future两个模板类,通过这两个模板类可以实现异步存储值并获取值的功能。
std::promise
The class template std::promise provides a facility to store a value or an exception that is later acquired asynchronously via a std::future object created by the std::promise object. Note that the std::promise object is meant to be used only once.
- 模板类定义
emplate< class R > class promise;
template< class R > class promise<R&>;
template<> class promise<void>;
- 成员函数
函数 | 说明 |
---|---|
构造函数 | - |
析构函数 | - |
operator= | - |
swap | 交换两个promise对象 |
get_future | 绑定并返回一个future对象 |
set_value | 设置值 |
set_value_at_thread_exit | 在线程退出时设置值 |
set_exception | 设置异常 |
set_exception_at_thread_exit | 在线程退出时设置异常 |
std::future
The class template std::future provides a mechanism to access the result of asynchronous operations
- std::future可以被 std::async,std::packaged_task,std::promise创建,并用于异步获得 std::async,std::packaged_task,std::promise等对象设置的值或异常。
- 模板类定义
template< class T > class future;
template< class T > class future<T&>;
template<> class future<void>;
- 成员函数
函数 | 说明 |
---|---|
构造函数 | - |
析构函数 | - |
operator= | - |
get | 获取结果 |
valid | checks if the future has a shared state |
wait | 等待结果可用 |
wait_for | 等待结果可用(指定等待时间) |
wait_until | 等待结果可用(指定等待时刻) |
示例
#include <iostream>
#include <thread>
#include <future>
#include <string>
int main()
std::promise<std::string> p;
std::future<std::string> f = p.get_future();
std::thread t([&p]
p.set_value("lindduo");
);
std::string ret = f.get();
std::cout << ret << std::endl;
t.join();
return 0;
以上是关于C++11promise和future介绍的主要内容,如果未能解决你的问题,请参考以下文章
c++11_14学习之future async promise
[C++11 多线程异步] --- std::promise/std::future