C++的promise和future
时间: 2023-07-01 13:07:03 浏览: 119
C++11引入了promise和future,它们是用来处理异步操作的工具。
promise是一个对象,它可以设置一个值或者异常,然后将这个值或者异常传递给一个future对象。promise的set_value()和set_exception()方法可以设置值和异常。
future是一个对象,它可以等待异步操作完成并获取结果。future的get()方法可以获取值或者异常。当异步操作完成时,promise将设置一个值或者异常,并将其传递给future。
使用promise和future可以将异步操作分离出来,使得程序的执行不需要等待异步操作完成。这样可以提高程序的性能和响应速度。
以下是一个简单的例子:
```c++
#include <iostream>
#include <future>
int main() {
std::promise<int> p;
std::future<int> f = p.get_future();
std::thread t([&p]() {
p.set_value(42);
});
std::cout << f.get() << std::endl;
t.join();
return 0;
}
```
在这个例子中,我们创建了一个promise对象p和一个future对象f。我们创建了一个线程t,在线程中设置了promise的值为42。在主线程中,我们使用future的get()方法获取值,并输出到控制台上。最后我们调用线程的join()方法等待线程结束。
阅读全文