public member function
<future>

std::future::share

shared_future<T> share();
获取共享 future
返回一个 shared_future 对象,该对象获取 future 对象的*共享状态*。

future 对象(*this)将不再拥有*共享状态*(如同*默认构造*一样),并且不再*有效*。

参数



返回值

一个 shared_future 对象,它获取 `*this` 的*共享状态*,如同构造为
1
shared_future<T>(std::move(*this))
T 是值类型(future 的模板参数)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// future::share
#include <iostream>       // std::cout
#include <future>         // std::async, std::future, std::shared_future

int get_value() { return 10; }

int main ()
{
  std::future<int> fut = std::async (get_value);
  std::shared_future<int> shfut = fut.share();

  // shared futures can be accessed multiple times:
  std::cout << "value: " << shfut.get() << '\n';
  std::cout << "its double: " << shfut.get()*2 << '\n';

  return 0;
}

输出

value: 10
its double: 20


数据竞争

future 对象将被修改。

异常安全

在*无效*的 future 对象上调用此成员函数,会产生*未定义行为*(尽管库实现可能会检测到此情况并抛出具有 no_state *错误条件*的 future_error)。

另见