最終更新日時(UTC):
が更新

履歴 編集

function
<future>

std::packaged_task::get_future(C++11)

future<R> get_future();

概要

結果取得のためのfutureオブジェクトを取得する

戻り値

*thisと同じ共有状態を持つfuture<R>オブジェクトを返す

同期

この関数の呼び出しでは、以下の呼び出しとのデータ競合は発生しない (C++20):

これは、以下のようなケースをサポートするための規定:

std::packaged_task<void()> p;
std::thread t{ []{
  p.get_future().wait();
}};
p();
t.join();

例外

この関数は、以下のerror conditionを持つfuture_error例外オブジェクトを送出する可能性がある:

  • future_already_retrieved : すでにこの関数によって共有状態が作られている
  • no_state*thisが共有状態を持っていない(デフォルト構築されたpackaged_task、ムーブされたあとなどに起こりうる)

#include <iostream>
#include <future>

int calc() { return 3; }

int main()
{
  std::packaged_task<int()> task(calc); // calc()を非同期タスクとして登録
  std::future<int> f = task.get_future(); // 結果値取得のためのfutureを取得

  // タスクを実行
  task();

  // 結果を取得
  int result = f.get();
  std::cout << result << std::endl;
}

出力

3

バージョン

言語

  • C++11

処理系

参照