1. ホーム
  2. c++

[解決済み] std::futureのステータスを取得する

2023-01-03 15:46:52

質問

を確認することは可能ですか? std::future が終了したかどうかを確認することはできますか?私が知る限りでは、これを行う唯一の方法は wait_for をゼロデュレーションで呼び出し、ステータスが ready であるかどうかをチェックしますが、より良い方法はありますか?

どのように解決するのですか?

おっしゃるとおりで wait_until を過去の時間で呼び出すこと(これは同等です)を除けば、他に良い方法はありません。

もっと便利な構文が欲しければ、いつでも小さなラッパーを書くことができます。

template<typename R>
  bool is_ready(std::future<R> const& f)
  { return f.wait_for(std::chrono::seconds(0)) == std::future_status::ready; }

注:もし関数が遅延された場合、これは決して真を返しません。 wait_for を直接チェックする方がよいでしょう。