condition_variable_any::wait_until のメソッド
スレッドをブロックして、スレッドがブロックされない最大の時刻を設定します。
template<class Lock, class Clock, class Duration>
void wait_until(
Lock& Lck,
const chrono::time_point<Clock, Duration>& Abs_time);
template<class Lock, class Clock, class Duration, class Predicate>
void wait_until(
Lock& Lck,
const chrono::time_point<Clock, Duration>& Abs_time,
Predicate Pred);
template<class Lock>
void wait_until(
Lock Lck,
const xtime *Abs_time);
template<class Lock, class Predicate>
void wait_until(
Lock Lck,
const xtime *Abs_time,
Predicate Pred);
パラメーター
Lck
Mutex オブジェクト。Abs_time
chrono::time_point のオブジェクト。Pred
true か falseを返す式。
戻り値
Abs_time が経過すると、待機時間が終了すると cv_status の型を返します cv_status::timeout を返すメソッド。それ以外の場合は、メソッドの戻り値 cv_status::no_timeout。
bool を返します Predの値を返すメソッド。
解説
condition_variable のオブジェクトまでの最初のメソッドはブロック notify_one または notify_allし、またはを Abs_timeまでの呼び出しによってシグナル状態になります。また、疑って目覚めるできます。
2 番目のメソッドは、次のコードが実行されます。
while(!Pred())
if(wait_until(Lck, Abs_time) == cv_status::timeout)
return Pred();
return true;
3 番目と 4 番目 xtime メソッドは型のオブジェクトに chrono::time_point のオブジェクトを置き換えるには、ポインターを使用します。xtime のオブジェクトがシグナルを待機する最大時間を指定します。
必要条件
condition_variableヘッダー:
名前空間: std