std::shared_future<T>::wait_until
| template< class Clock, class Duration > std::future_status wait_until( const std::chrono::time_point<Clock,Duration>& timeout_time ) const; |
(C++11以降) | |
wait_until は、結果が利用可能になるまで待機します。指定された timeout_time に到達するか、結果が利用可能になるかのいずれか早い方までブロックします。戻り値は、wait_until が返った理由を示します。
もし future が遅延評価を使用する async の呼び出しの結果である場合、この関数は待機せずに即座に返ります。
この関数の呼び出し前に valid() が false である場合、または Clock が Clock の要件を満たさない場合、動作は未定義です。 もし std::chrono::is_clock_v<Clock> が false である場合、プログラムは不正形式となります。(since C++20)
目次 |
[編集] パラメータ
| timeout_time | - | ブロックする最大時間点 |
[編集] 戻り値
| Constant | 説明 |
| future_status::deferred | 共有状態には遅延評価を使用した遅延関数が含まれているため、結果は明示的に要求された場合にのみ計算されます。 |
| future_status::ready | 結果が準備完了です。 |
| future_status::timeout | タイムアウトが期限切れになりました。 |
[編集] 例外
実行中にクロック、time_point、または duration によってスローされる可能性のある例外(標準ライブラリで提供されるクロック、time_point、および duration は決して例外をスローしません)。
[編集] 注意
実装は、呼び出し前に valid() = false となるケースを検出し、エラー条件 future_errc::no_state を持つ std::future_error をスローすることが推奨されます。
timeout_time に関連付けられたクロックを使用して時間を測定することが標準で推奨されています。そのクロックはモノトニッククロックである必要はありません。クロックが断続的に調整された場合のこの関数の動作に関する保証はありませんが、既存の実装は Clock から std::chrono::system_clock へ timeout_time を変換し、POSIX の pthread_cond_timedwait に委譲するため、待機はシステムクロックの調整を尊重しますが、ユーザー提供の Clock の調整は尊重しません。いずれの場合も、スケジューリングやリソース競合による遅延のため、関数は timeout_time が到達した後よりも長く待機する可能性もあります。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| 結果が利用可能になるまで待機します。 (public member function) | |
| 指定されたタイムアウト時間内に結果が利用可能でない場合、待機して戻ります。 (public member function) |