public member function
<future>

std::promise::get_future

future<T> get_future();
获取 future
返回一个与对象的共享状态关联的future对象。

一旦就绪,返回的future对象就可以访问由promise对象设置的值或异常。

每个promise共享状态只能检索一个future对象。

调用此函数后,promise应在某个时候使其共享状态就绪(通过设置值或异常),否则在销毁时会自动使其就绪,并包含一个类型为future_error(具有broken_promise错误条件)的异常。

参数



返回值

一个引用了此promise相同共享状态future对象。
T 是值(promise的模板参数)的类型。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// promise example
#include <iostream>       // std::cout
#include <functional>     // std::ref
#include <thread>         // std::thread
#include <future>         // std::promise, std::future

void print_int (std::future<int>& fut) {
  int x = fut.get();
  std::cout << "value: " << x << '\n';
}

int main ()
{
  std::promise<int> prom;                      // create promise

  std::future<int> fut = prom.get_future();    // engagement with future

  std::thread th1 (print_int, std::ref(fut));  // send future to new thread

  prom.set_value (10);                         // fulfill promise
                                               // (synchronizes with getting the future)
  th1.join();
  return 0;
}

输出

value: 10


数据竞争

promise 对象被修改。

异常安全

基本保证:如果抛出异常,则 promise 对象处于有效状态。

此成员函数在以下条件下抛出异常
异常类型错误条件描述
future_errorfuture_errc::no_state该对象没有共享状态(它已被移动赋值
future_errorfuture_errc::future_already_retrieved先前对该成员函数的调用已检索到future
根据库实现,此成员函数还可能抛出异常来报告其他情况(例如bad_allocsystem_error)。

另见