次の方法で共有


condition_variable::wait_until のメソッド

スレッドをブロックして、スレッドがブロックされない最大の時刻を設定します。

template<
   class Clock,
   class Duration
>
cv_status wait_until(
   unique_lock<mutex>& Lck,
   const chrono::time_point<Clock,
   Duration>& Abs_time
);
template<
   class Clock,
   class Duration,
   class Predicate
>
bool wait_until(
   unique_lock<mutex>& Lck,
   const chrono::time_point<Clock,
   Duration>& Abs_time,
   Predicate Pred
);
cv_status wait_until(
   unique_lock<mutex>& Lck,
   const xtime *Abs_time
);
template<class Predicate>
bool wait_until(
   unique_lock<mutex>& Lck,
   const xtime *Abs_time,
   Predicate Pred
);

パラメーター

  • Lck
    unique_lock<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

参照

関連項目

condition_variable クラス

<condition_variable>